c# - 如何在 Image(WPF) 中的图像上绘制一个点,带有事件的运行时

标签 c# wpf draw

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

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

最佳答案

  1. Canvas 允许您使用左/上坐标放置对象。
  2. 您需要将 Canvas 恰好放在与图像尺寸相同的图像上。
  3. 为此,您应该使用网格,因为它允许控件相互堆叠。
  4. 您可以在 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/

相关文章:

c# - 当组合值设置为一个值时禁用 WPF 数据网格中的单元格 - MVVM

javascript - 在 html 页面中的 2 个元素之间画线

c# - Entity Framework 和加密数据库

wpf - 如何在按钮样式中触发视觉画笔(带有 Storyboard)?

c# - 通过C#在Excel中给出数字格式

WPF 某些样式未应用于 DataTemplate 控件

clojure - 将选项传递给 quil 和 clojure 中的 draw 函数声明。

c++ - Direct3D 奇怪的崩溃

c# - 如何可视化声音?

c# - 在 C# 构造函数中强制显式初始化成员