如何在图像(WPF)中的图像上绘制点,运行时使用事件

本文关键字:图像 绘制 运行时 事件 WPF | 更新日期: 2023-09-27 18:26:08

我有以下问题:我在WPF中使用Image组件。我加载我的Image,这对我来说是map。我想制作一个Button,如果我点击,我将被允许点击我的map并画一个点。该点应该是"唯一的",因此它应该记住坐标/描述(我将把它存储在数据库中)。坐标应该只从图像中读取,而不是从整个表单中读取。在创建点之后,我需要OnMouseClick事件。

我应该使用/阅读什么来做到这一点?

如何在图像(WPF)中的图像上绘制点,运行时使用事件

  1. 画布允许您使用左/上坐标放置对象
  2. 您需要将画布放置在与图像尺寸相同的图像上
  3. 为了实现这一点,您应该使用网格,因为它允许控件相互堆叠
  4. 您可以使用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);            
        }