如何在图像(WPF)中的图像上绘制点,运行时使用事件
本文关键字:图像 绘制 运行时 事件 WPF | 更新日期: 2023-09-27 18:26:08
我有以下问题:我在WPF中使用Image
组件。我加载我的Image
,这对我来说是map
。我想制作一个Button
,如果我点击,我将被允许点击我的map
并画一个点。该点应该是"唯一的",因此它应该记住坐标/描述(我将把它存储在数据库中)。坐标应该只从图像中读取,而不是从整个表单中读取。在创建点之后,我需要OnMouseClick
事件。
我应该使用/阅读什么来做到这一点?
- 画布允许您使用左/上坐标放置对象
- 您需要将画布放置在与图像尺寸相同的图像上
- 为了实现这一点,您应该使用网格,因为它允许控件相互堆叠
-
您可以使用
MouseLeftButtonDown
事件处理程序中的e.GetPosition()
获取鼠标单击坐标。由于画布掩盖了图像,所以您将根据图像获得坐标。<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); }