问题描述
我想我(几乎)尝试了所有方法,但没有找到使用图表平移或拖动画布的解决方案。
MainWindow (canvasChartContainer) 以编程方式“接收”一个 Windows 窗体图表用户控件
c# 背后的代码
canvasChartContainer.Children.Add(mychart);
主窗口.xaml
<Grid>
<Canvas Name="canvasChartContainer" Height="xxx" Width="yyy" Background="White" events ??????>
</Canvas>
<Button x:Name="LineChart" Content="Line Chart" Click="LineChart_Click" Width="120" Grid.Row="0" Grid.Column="0" HorizontalAlignment="Left" Height="30"/>
</Grid>
现在包含 Windows 窗体主机图表的 UserControl ("mschart") ......
xmlns:mschart="clr-namespace:System.Windows.Forms.DataVisualization.Charting; 我在canvasChartContainer尝试了事件预览.....,mousemove,你可以通过下面的方法看到 感谢您对此的任何帮助。x:Name="grid1" Margin="10">
<windowsformshost VerticalAlignment="Stretch" Background="Transparent" >
<mschart:Chart x:Name="myChart" Height="250" Width="900"
</windowsformshost>
</Grid>
private void Canvas_MouseLeftButtonDown(object sender,MouseButtonEventArgs e)
{
clickPosition = e.GetPosition(canvasChartContainer); // get click position
}
private void Canvas_MouseMove(object sender,System.Windows.Input.MouseEventArgs e)
{
if (e.LeftButton != MouseButtonState.Released)
{
System.Windows.Point mousePos = e.GetPosition(canvasChartContainer); // get absolute mouse position
Canvas.SetLeft(canvasChartContainer,mousePos.X - clickPosition.X); // move canvas
Canvas.SetTop(canvasChartContainer,mousePos.Y - clickPosition.Y);
}
}
UIElement dragObject = null;
System.Windows.Point offset;
private void canvasChartContainer_PreviewMouseLeftButtonDown(object sender,MouseButtonEventArgs e)
{
this.dragObject = sender as UIElement;
this.offset = e.GetPosition(this.canvasChartContainer);
this.offset.Y -= Canvas.GetTop(this.dragObject);
this.offset.X -= Canvas.GetLeft(this.dragObject);
this.canvasChartContainer.CaptureMouse();
}
private void canvasChartContainer_PreviewMouseMove(object sender,System.Windows.Input.MouseEventArgs e)
{
if (this.dragObject == null)
return;
var position = e.GetPosition(sender as IInputElement);
Canvas.SetTop(this.dragObject,position.Y - this.offset.Y);
Canvas.SetLeft(this.dragObject,position.X - this.offset.X);
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)