热点推荐

查看: 4083|回复: 13
收起左侧

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

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

    连续签到: 1 天

    [LV.4]偶尔看看III

    1

    主题

    21

    帖子

    503

    积分

    Rank: 3

    积分
    503

    优质会员

    发表于 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;
            }


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

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

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

    面向企业销售智能软件带相机和镜头,仅需3500,来电咨询 15019223858  18520862540
  • TA的每日心情
    害羞
    2019-1-2 09:20
  • 签到天数: 18 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    1

    主题

    21

    帖子

    503

    积分

    Rank: 3

    积分
    503

    优质会员

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

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

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

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

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

    连续签到: 1 天

    [LV.4]偶尔看看III

    1

    主题

    21

    帖子

    503

    积分

    Rank: 3

    积分
    503

    优质会员

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

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

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

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

  • TA的每日心情
    害羞
    2018-4-19 16:23
  • 签到天数: 26 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    0

    主题

    56

    帖子

    134

    积分

    Rank: 1

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

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

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

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

  • TA的每日心情
    点赞
    3 小时前
  • 签到天数: 331 天

    连续签到: 1 天

    [LV.8]以坛为家I

    88

    主题

    379

    帖子

    2155

    积分

    Rank: 9

    积分
    2155

    热心会员突出贡献优质会员最佳新人

    发表于 2017-10-24 22:26:34 | 显示全部楼层
    尝试下打断点跟踪下是否事件正确触发,要么就是触发事件不对。
  • TA的每日心情
    害羞
    2019-1-2 09:20
  • 签到天数: 18 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    1

    主题

    21

    帖子

    503

    积分

    Rank: 3

    积分
    503

    优质会员

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

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

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

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

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

    连续签到: 1 天

    [LV.4]偶尔看看III

    1

    主题

    21

    帖子

    503

    积分

    Rank: 3

    积分
    503

    优质会员

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

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

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

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

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

  • TA的每日心情
    点赞
    3 小时前
  • 签到天数: 331 天

    连续签到: 1 天

    [LV.8]以坛为家I

    88

    主题

    379

    帖子

    2155

    积分

    Rank: 9

    积分
    2155

    热心会员突出贡献优质会员最佳新人

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

    这就说明功能不对,哈哈!按钮事件没有触发事件函数
  • TA的每日心情
    害羞
    2018-3-7 14:29
  • 签到天数: 18 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    3

    主题

    71

    帖子

    153

    积分

    Rank: 2Rank: 2

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

    新手过来学习学习

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

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

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

  • TA的每日心情
    害羞
    2018-12-3 21:24
  • 签到天数: 48 天

    连续签到: 1 天

    [LV.5]常住居民I

    0

    主题

    10

    帖子

    503

    积分

    Rank: 5Rank: 5Rank: 5

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

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

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

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

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

    本版积分规则

    经营性网站备案信息 经营性网站
    备案信息

    中国互联网举报中心 中国互联网
    举报中心

    中国文明网传播文明 中国文明网
    传播文明

    诚信网站

    深圳市市场监督管理局企业主体身份公示 工商网监
    电子标识