WPF 在image控件用鼠标拖拽出矩形的实现方法

所属分类: 软件编程 / C#教程 阅读数: 105
收藏 0 赞 0 分享

今天有小伙伴问我一个问题,在image控件用鼠标拖拽出矩形,本文告诉大家如何使用鼠标画出矩形

做出来的效果先请大家看一下

最简单的方法是在 Down 的时候记录按下的点,在 移动的时候重新计算所在的宽度

先在界面使用一个图片和一个矩形

<Grid x:Name="Grid">
    <Image Source="TIM截图20180811150831.png"></Image>
    <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">欢迎访问我博客 http://lindexi.oschina.io </TextBlock>
    <Rectangle x:Name="Rectangle" StrokeThickness="2" Stroke="Black" HorizontalAlignment="Left" VerticalAlignment="Top"></Rectangle>
  </Grid>

需要注意,图片的位置需要修改为自己需要的图片

这里的 Rectangle 需要做一些设置,主要 HorizontalAlignmentVerticalAlignment 必须设置为左上角

现在打开 cs 代码,在按下和移动修改矩形

MouseDown += MainWindow_MouseDown;
      MouseMove += MainWindow_MouseMove;
      MouseUp += MainWindow_MouseUp;

需要两个字段来记录当前是否按下和第一次按下所在的坐标

刚才给 Grid 的命名就是为了拿到相对 Grid 的坐标

private void MainWindow_MouseDown(object sender, MouseButtonEventArgs e)
    {
      _started = true;

      _downPoint = e.GetPosition(Grid);
    }

    private bool _started;

    private Point _downPoint;

在鼠标按下时拿到按下的坐标,通过这个坐标就可以计算出矩形所在的位置

private void MainWindow_MouseUp(object sender, MouseButtonEventArgs e)
    {
      _started = false;
    }

    private void MainWindow_MouseMove(object sender, MouseEventArgs e)
    {
      if (_started)
      {
        var point = e.GetPosition(Grid);

        var rect = new Rect(_downPoint, point);
        Rectangle.Margin = new Thickness(rect.Left, rect.Top, 0, 0);
        Rectangle.Width = rect.Width;
        Rectangle.Height = rect.Height;
      }
    }

代码就是这么简单,通过修改 Margin 的方法修改矩形

如果对于高手,我建议使用 RenderTransform 的方式而不是使用 Margin 这里使用这个方法只是看起来简单

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

C#抽象类与抽象方法详解

这篇文章主要为大家详细介绍了C#抽象类与抽象方法的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

C#代码实现扑克牌排序的几种方式

今天小编就为大家分享一篇关于C#代码实现扑克牌排序,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

C#泛型概念的简介与泛型的使用

今天小编就为大家分享一篇关于C#泛型概念的简介与泛型的使用,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

C# 7.0 使用下划线忽略使用的变量的原因分析

这篇文章主要介绍了C# 7.0 使用下划线忽略使用的变量的原因浅析,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C# 中使用正则表达式匹配字符的含义

正则表达式的作用用来描述字符串的特征。本文重点给大家介绍C# 中使用正则表达式匹配字符的含义,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
收藏 0 赞 0 分享

C# Dictionary和SortedDictionary的简介

今天小编就为大家分享一篇关于C# Dictionary和SortedDictionary的简介,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

C#中SQL Command的基本用法

今天小编就为大家分享一篇关于C#中SQL Command的基本用法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

C#使用SQL DataReader访问数据的优点和实例

今天小编就为大家分享一篇关于C#使用SQL DataReader访问数据的优点和实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

C#使用SQL Dataset数据集代码实例

今天小编就为大家分享一篇关于的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

C#使用SQL DataAdapter数据适配代码实例

今天小编就为大家分享一篇关于C#使用SQL DataAdapter数据适配代码实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享
查看更多