我有以下问题:我在 WPF 中使用 Image
组件。我加载了我的 Image
,它是我的 map
。我想制作一个 Button
,如果我点击它,我将被允许点击我的 map
并画一个点。那个点应该是“唯一的”,所以它应该记住坐标/描述(我会把它存储在数据库中)。
坐标只能从该图像中读取,而不是从整个表格中读取。
创建点后,我需要 OnMouseClick
事件。
我应该使用/阅读什么来做到这一点?
最佳答案
- Canvas 允许您使用左/上坐标放置对象。
- 您需要将 Canvas 恰好放在与图像尺寸相同的图像上。
- 为此,您应该使用网格,因为它允许控件相互堆叠。
您可以在
MouseLeftButtonDown
事件处理程序中使用e.GetPosition()
获取鼠标点击坐标。由于 Canvas 覆盖了图像,因此您将根据图像获得坐标。<Grid> <Image x:Name="MapImg" Source="img/map.gif" Stretch="Fill" MouseLeftButtonDown="Image_MouseLeftButtonDown_1"/> <Canvas x:Name="Cnv"/> </Grid> private void Image_MouseLeftButtonDown_1(object sender, MouseButtonEventArgs e) { Ellipse ellipse = new Ellipse(); ellipse.Fill = Brushes.Sienna; ellipse.Width = 100; ellipse.Height = 100 ; ellipse.StrokeThickness = 2; Cnv.Children.Add(ellipse); Canvas.SetLeft(ellipse, e.GetPosition(MapImg).X); Canvas.SetTop(ellipse, e.GetPosition(MapImg).Y); }
关于c# - 如何在 Image(WPF) 中的图像上绘制一个点,带有事件的运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34137196/