首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有哪些不同的方法可以在不使用设置为左和顶的水平或垂直对齐的情况下拖动和移动对象

问有哪些不同的方法可以在不使用设置为左和顶的水平或垂直对齐的情况下拖动和移动对象
EN

Stack Overflow用户
提问于 2010-12-02 20:30:29
回答 1查看 570关注 0票数 3

我正在开发一个仪表板应用程序,我希望用户能够调整大小,并将他们的图表小部件移到他们喜欢的地方。我在能够同时移动和调整尺寸方面遇到了问题。其原因是,当图表对齐设置为:

代码语言:javascript
复制
chart.HorizontalAlignment = HorizontalAlignment.Left;
chart.VerticalAlignment = VerticalAlignment.Top;

...the的移动将完美地工作,但调整大小将在无法察觉的方向疯狂。如果我将对齐切换到以下内容:

代码语言:javascript
复制
chart.HorizontalAlignment = HorizontalAlignment.Stretch;
chart.VerticalAlignment = VerticalAlignment.Stretch;

...the移动将关闭,但调整大小将体面地工作。

移动代码如下:

代码语言:javascript
复制
public void chart_MouseMove(object sender, MouseEventArgs e)
{
    C1Chart chart = sender as C1Chart;

       if (!ModifierKey)
       {
           if (isMouseCaptured)
           {
               // Calculate the current position of the object.
               double deltaV = e.GetPosition(null).Y - mouseVerticalPosition;
               double deltaH = e.GetPosition(null).X - mouseHorizontalPosition;
               double newTop = deltaV + (double)chart.Margin.Top;
               double newLeft = deltaH + (double)chart.Margin.Left;

               // Set new position of object.            
               chart.Margin = new Thickness(newLeft, newTop, 0, 0); 

               // Update position global variables.
               mouseVerticalPosition = e.GetPosition(null).Y;
               mouseHorizontalPosition = e.GetPosition(null).X;
          }
      }
}

mouseVerticalPosition、mouseHorizontalPosition、isMouseCaptured在图表鼠标向下事件中分配,ModifierKey是布尔值,用于判断是否按下任何键盘修饰符以知道是否要移动。这段代码是从MSDN中删除的,但我对替代解决方案持开放态度。

调整大小的代码可以在这里找到(Microsoft示例)或(Denis Vuyka博客)。以下是我的问题:是否有不同的方法来执行拖动和移动或调整大小(Adorner ),这是我没有看到的。或者,是否有一种方法将此代码与对齐黑客.一起使用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-02 22:57:49

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4339547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档