我正在开发一个仪表板应用程序,我希望用户能够调整大小,并将他们的图表小部件移到他们喜欢的地方。我在能够同时移动和调整尺寸方面遇到了问题。其原因是,当图表对齐设置为:
chart.HorizontalAlignment = HorizontalAlignment.Left;
chart.VerticalAlignment = VerticalAlignment.Top;...the的移动将完美地工作,但调整大小将在无法察觉的方向疯狂。如果我将对齐切换到以下内容:
chart.HorizontalAlignment = HorizontalAlignment.Stretch;
chart.VerticalAlignment = VerticalAlignment.Stretch;...the移动将关闭,但调整大小将体面地工作。
移动代码如下:
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 ),这是我没有看到的。或者,是否有一种方法将此代码与对齐黑客.一起使用?
发布于 2010-12-02 22:57:49
你查过MouseDragElementBehavior吗?http://blogs.msdn.com/b/dphill/archive/2009/09/25/blend-behaviors.aspx
https://stackoverflow.com/questions/4339547
复制相似问题