51Halcon机器视觉

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,微信登录

查看: 7652|回复: 14

[待解决] c# WPF ,使用HWindowControlWPF控件缩放和移动图片

[复制链接]
  • TA的每日心情
    害羞
    2019-1-2 09:20
  • 签到天数: 18 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    1

    主题

    23

    帖子

    510

    积分

    Rank: 3

    积分
    510

    切换助手验证会员

    发表于 2017-10-22 11:06:49 | 显示全部楼层 |阅读模式

    51Halcon诚邀您的加入,专注于机器视觉开发与应用技术,我们一直都在努力!

    您需要 登录 才可以下载或查看,没有帐号?会员注册

    x
           最近刚刚学习WPF和halcon的联合编程,在需求中需要创建模板,但是由于图片比较大直接在界面上画出目标区域偏差太大,所以想让图片能够放大和移动,这样会比较方便。我利用HHWindowControlWPF的鼠标事件结合WPF封装的ScaleTtransForm和TranslateTransform类编写。但是当我操作时,没有事件触发,有没有知道原因的。麻烦大家了。
            下面贴上我的程序
           1.xaml 对应的程序:
           <Window
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:HalconDotNet="clr-namespace:HalconDotNet;assembly=halcondotnet" x:Class="Halcon界面.MainWindow"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <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"/>
            <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"/>
            <HalconDotNet:HWindowControlWPF x:Name="image"  HorizontalAlignment="Left"  Margin="87.045,34.195,0,0" VerticalAlignment="Top" Width="320" Height="224.85"
                                            MouseLeftButtonDown="image_MouseLeftButtonDown"
                                            MouseLeftButtonUp="image_MouseLeftButtonUp"
                                            MouseMove="image_MouseMove"
                                            MouseWheel="image_MouseWheel"
                                            MouseLeave="image_MouseLeave"
                                            RenderOptions.BitmapScalingMode="NearestNeighbor" ImagePart="0,0,1024,1024" MouseDown="image_MouseDown" MouseUp="image_MouseUp">
                <HalconDotNet:HWindowControlWPF.RenderTransform>
                    <TransformGroup>
                        <ScaleTransform x:Name="stf"></ScaleTransform>
                        <TranslateTransform x:Name="tlt"></TranslateTransform>
                    </TransformGroup>
                </HalconDotNet:HWindowControlWPF.RenderTransform>
            </HalconDotNet:HWindowControlWPF>
        </Grid>
    </Window>

    2. cs 文件

       private bool isMouseLeftButtonDown = false;
       Point previousMousePoint = new Point();
    //鼠标左键按下消息
            private void image_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {
                isMouseLeftButtonDown = true;
                previousMousePoint = e.GetPosition(image);
            }
            //鼠标左键弹起消息
            private void image_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
            {
                isMouseLeftButtonDown = false;
            }
            //鼠标离开消息
            private void image_MouseLeave(object sender, MouseEventArgs e)
            {
                isMouseLeftButtonDown = false;
            }
            private void image_MouseMove(object sender, MouseEventArgs e)
            {
                if (isMouseLeftButtonDown)
                {
                    Point position = e.GetPosition(image);
                    tlt.X = position.X - this.previousMousePoint.X;
                    tlt.Y = position.Y - this.previousMousePoint.Y;
                }
            }

            private void image_MouseWheel(object sender, MouseWheelEventArgs e)
            {
                Point centerPoint = e.GetPosition(image);
                double val = (double)e.Delta / 2000;
                if (stf.ScaleX < 0.3 && stf.ScaleY < 0.3 && e.Delta < 0)
                {
                    return;
                }
                stf.CenterX = centerPoint.X;
                stf.CenterY = centerPoint.Y;
                stf.ScaleX += val;
                stf.ScaleY += val;
            }


    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    害羞
    2019-1-2 09:20
  • 签到天数: 18 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    1

    主题

    23

    帖子

    510

    积分

    Rank: 3

    积分
    510

    切换助手验证会员

     楼主| 发表于 2017-10-22 11:07:51 | 显示全部楼层
    希望大家能够帮忙解决一下

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    害羞
    2019-1-2 09:20
  • 签到天数: 18 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    1

    主题

    23

    帖子

    510

    积分

    Rank: 3

    积分
    510

    切换助手验证会员

     楼主| 发表于 2017-10-22 17:25:28 | 显示全部楼层
    为什么我写的鼠标触发事件没有反应呢

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    窃喜
    2020-5-30 09:37
  • 签到天数: 30 天

    连续签到: 1 天

    [LV.5]常住居民I

    0

    主题

    65

    帖子

    151

    积分

    Rank: 1

    积分
    151
    发表于 2017-10-23 20:52:35 | 显示全部楼层
    学习一下,看是否有人解决。。

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    点赞
    前天 21:16
  • 签到天数: 689 天

    连续签到: 1 天

    [LV.9]以坛为家II

    148

    主题

    767

    帖子

    4562

    积分

    Rank: 9

    积分
    4562

    热心会员突出贡献切换助手验证会员最佳新人

    发表于 2017-10-24 22:26:34 | 显示全部楼层
    尝试下打断点跟踪下是否事件正确触发,要么就是触发事件不对。

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    害羞
    2019-1-2 09:20
  • 签到天数: 18 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    1

    主题

    23

    帖子

    510

    积分

    Rank: 3

    积分
    510

    切换助手验证会员

     楼主| 发表于 2017-10-28 20:39:56 | 显示全部楼层
    我也想实现,但是实现不了

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    害羞
    2019-1-2 09:20
  • 签到天数: 18 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    1

    主题

    23

    帖子

    510

    积分

    Rank: 3

    积分
    510

    切换助手验证会员

     楼主| 发表于 2017-10-28 20:40:31 | 显示全部楼层
    IronMan 发表于 2017-10-24 22:26
    尝试下打断点跟踪下是否事件正确触发,要么就是触发事件不对。

    加断点,但是不会触发断点

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    点赞
    前天 21:16
  • 签到天数: 689 天

    连续签到: 1 天

    [LV.9]以坛为家II

    148

    主题

    767

    帖子

    4562

    积分

    Rank: 9

    积分
    4562

    热心会员突出贡献切换助手验证会员最佳新人

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

    这就说明功能不对,哈哈!按钮事件没有触发事件函数

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    害羞
    2018-3-7 14:29
  • 签到天数: 18 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    3

    主题

    71

    帖子

    153

    积分

    Rank: 2Rank: 2

    积分
    153
    发表于 2017-11-4 11:26:49 | 显示全部楼层

    新手过来学习学习

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    开心
    2019-9-25 10:12
  • 签到天数: 49 天

    连续签到: 1 天

    [LV.5]常住居民I

    0

    主题

    10

    帖子

    507

    积分

    Rank: 3

    积分
    507
    发表于 2017-11-16 20:51:16 | 显示全部楼层
    新手请教openImage_Click 和 operateImage_Click的函数:handshake

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

    您需要登录后才可以回帖 会员登录 | 会员注册

    本版积分规则

    建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站

    51Halcon会员技术交流会员技术交流 | 51Halcon官方客服咨询官方客服咨询 | Halcon切换助手使用反馈切换助手使用

    有问题需要咨询站长?| 申请友链| 小黑屋| 手机版| Archiver|  

    粤ICP备15095995号-2 粤公网安备44030602000670号

    CopyRight © 2015-2020 51Halcon机器视觉. Tencent Cloud X3.4.

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