今天有小伙伴问我一个问题,在图像控件用鼠标拖拽出矩形,本文告诉大家如何使用鼠标画出矩形
做出来的效果先请大家看一下
最简单的方法是在下来的时候记录按下的点,在移动的时候重新计算所在的宽度
先在界面使用一个图片和一个矩形
& lt;网格x: Name=巴瘛北? & lt;图像源=" TIM截图20180811150831. png”祝辞& lt;/Image> & lt; TextBlock HorizontalAlignment="中心" VerticalAlignment=爸行摹痹诨队梦饰也┛蚳ttp://lindexi.oschina。io & lt;/TextBlock> & lt;矩形x: Name=熬匦巍盨trokeThickness中风=?”=昂谏盚orizontalAlignment=白蟆盫erticalAlignment=岸ゼ丁弊4? lt;/Rectangle> & lt;/Grid>
需要注意,图片的位置需要修改为自己需要的图片
这里的矩形<代码> 代码>需要做一些设置,主要<代码> HorizontalAlignment 代码>和<代码> VerticalAlignment> 代码必须设置为左上角
现在打开cs代码,在按下和移动修改矩形
MouseDown +=MainWindow_MouseDown; MouseMove +=MainWindow_MouseMove; MouseUp +=MainWindow_MouseUp;
需要两个字段来记录当前是否按下和第一次按下所在的坐标
刚才给网格<代码> 代码>的命名就是为了拿到相对网格的坐标
私人空间MainWindow_MouseDown(对象发送方,MouseButtonEventArgs e) { 的地方=true; _downPoint=e.GetPosition(网格); } 私人bool的地方; 私人点_downPoint;
在鼠标按下时拿到按下的坐标,通过这个坐标就可以计算出矩形所在的位置
私人空间MainWindow_MouseUp(对象发送方,MouseButtonEventArgs e) { 的地方=false; } 私人空间MainWindow_MouseMove(对象发送方,MouseEventArgs e) { 如果(的地方) { var=e.GetPosition点(网格); var矩形=new矩形(_downPoint,点); 矩形。利润=new厚度(矩形。离开,rect.Top, 0, 0); 矩形。宽度=rect.Width; 矩形。身高=rect.Height; } }
代码就是这么简单,通过修改<代码>保证金代码>的方法修改矩形
如果对于高手,我建议使用<代码> RenderTransform> 代码的方式而不是使用<代码> 代码>这幅度里使用这个方法只是看起来简单
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。