开启左侧

c# WPF ,使用HWindowControlWPF控件缩放和移动图片

[复制链接]
SUTKZC 发表于 2017-10-22 11:06:49 | 显示全部楼层 |阅读模式
       最近刚刚学习WPF和halcon的联合编程,在需求中需要创建模板,但是由于图片比较大直接在界面上画出目标区域偏差太大,所以想让图片能够放大和移动,这样会比较方便。我利用HHWindowControlWPF的鼠标事件结合WPF封装的ScaleTtransForm和TranslateTransform类编写。但是当我操作时,没有事件触发,有没有知道原因的。麻烦大家了。
        下面贴上我的程序
       1.xaml 对应的程序:
      
  1. <Window
  2.         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3.         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4.         xmlns:HalconDotNet="clr-namespace:HalconDotNet;assembly=halcondotnet" x:Class="Halcon界面.MainWindow"
  5.         Title="MainWindow" Height="350" Width="525">
  6.     <Grid>
  7.         <Button x:Name="openImage" Content="打开图片" HorizontalAlignment="Left" Margin="137.791,264.045,0,0" VerticalAlignment="Top" Width="100.373" Height="31.18" Click="openImage_Click"/>
  8.         <Button x:Name="operateImage" Content="处理图片" HorizontalAlignment="Left" Margin="307.941,264.045,0,0" VerticalAlignment="Top" Width="103.358" Height="31.18" Click="operateImage_Click"/>
  9.         <HalconDotNet:HWindowControlWPF x:Name="image"  HorizontalAlignment="Left"  Margin="87.045,34.195,0,0" VerticalAlignment="Top" Width="320" Height="224.85"
  10.                                         MouseLeftButtonDown="image_MouseLeftButtonDown"
  11.                                         MouseLeftButtonUp="image_MouseLeftButtonUp"
  12.                                         MouseMove="image_MouseMove"
  13.                                         MouseWheel="image_MouseWheel"
  14.                                         MouseLeave="image_MouseLeave"
  15.                                         RenderOptions.BitmapScalingMode="NearestNeighbor" ImagePart="0,0,1024,1024" MouseDown="image_MouseDown" MouseUp="image_MouseUp">
  16.             <HalconDotNet:HWindowControlWPF.RenderTransform>
  17.                 <TransformGroup>
  18.                     <ScaleTransform x:Name="stf"></ScaleTransform>
  19.                     <TranslateTransform x:Name="tlt"></TranslateTransform>
  20.                 </TransformGroup>
  21.             </HalconDotNet:HWindowControlWPF.RenderTransform>
  22.         </HalconDotNet:HWindowControlWPF>
  23.     </Grid>
  24. </Window>
复制代码

2. cs 文件
  
  1. private bool isMouseLeftButtonDown = false;
  2.    Point previousMousePoint = new Point();
  3. //鼠标左键按下消息
  4.         private void image_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
  5.         {
  6.             isMouseLeftButtonDown = true;
  7.             previousMousePoint = e.GetPosition(image);
  8.         }
  9.         //鼠标左键弹起消息
  10.         private void image_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
  11.         {
  12.             isMouseLeftButtonDown = false;
  13.         }
  14.         //鼠标离开消息
  15.         private void image_MouseLeave(object sender, MouseEventArgs e)
  16.         {
  17.             isMouseLeftButtonDown = false;
  18.         }
  19.         private void image_MouseMove(object sender, MouseEventArgs e)
  20.         {
  21.             if (isMouseLeftButtonDown)
  22.             {
  23.                 Point position = e.GetPosition(image);
  24.                 tlt.X = position.X - this.previousMousePoint.X;
  25.                 tlt.Y = position.Y - this.previousMousePoint.Y;
  26.             }
  27.         }

  28.         private void image_MouseWheel(object sender, MouseWheelEventArgs e)
  29.         {
  30.             Point centerPoint = e.GetPosition(image);
  31.             double val = (double)e.Delta / 2000;
  32.             if (stf.ScaleX < 0.3 && stf.ScaleY < 0.3 && e.Delta < 0)
  33.             {
  34.                 return;
  35.             }
  36.             stf.CenterX = centerPoint.X;
  37.             stf.CenterY = centerPoint.Y;
  38.             stf.ScaleX += val;
  39.             stf.ScaleY += val;
  40.         }
复制代码
 楼主| SUTKZC 发表于 2017-10-22 11:07:51 | 显示全部楼层
希望大家能够帮忙解决一下
 楼主| SUTKZC 发表于 2017-10-22 17:25:28 | 显示全部楼层
为什么我写的鼠标触发事件没有反应呢
kunge98321 发表于 2017-10-23 20:52:35 | 显示全部楼层
学习一下,看是否有人解决。。
绝地武士 发表于 2017-10-24 22:26:34 | 显示全部楼层
尝试下打断点跟踪下是否事件正确触发,要么就是触发事件不对。
 楼主| SUTKZC 发表于 2017-10-28 20:39:56 | 显示全部楼层
我也想实现,但是实现不了
 楼主| SUTKZC 发表于 2017-10-28 20:40:31 | 显示全部楼层
IronMan 发表于 2017-10-24 22:26
尝试下打断点跟踪下是否事件正确触发,要么就是触发事件不对。

加断点,但是不会触发断点
绝地武士 发表于 2017-10-29 15:52:38 | 显示全部楼层
SUTKZC 发表于 2017-10-28 20:40
加断点,但是不会触发断点

这就说明功能不对,哈哈!按钮事件没有触发事件函数
sdhuxuejun 发表于 2017-11-4 11:26:49 | 显示全部楼层

新手过来学习学习
jordan 发表于 2017-11-16 20:51:16 | 显示全部楼层
新手请教openImage_Click 和 operateImage_Click的函数:handshake
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表