MFC 对话框 之Yuv ddraw缩放+滚动条+左键放大,右键缩小

方法:

      大致的方法和RGB的缩放一致,注意ddraw yuv视频显示时,由于点击鼠标左键对图像进行放大,会造成ddraw的表面的高度和宽度等发生变化,这样我们缩放时,要及时跟新ddraw表面,在yuv缩放显示时,由于我有好几个类之间交互数据,造成2个对象访问同一个类的成员(坐标)的情况,获取不到坐标值。这个问题可以采用设计模式里面的单态 设计模式或使用GetParent()获取父类对话框的对象解决。

缩放公式如下:

imgRect :

根据放大的倍数和滚动条的位置,就算出原始图像的哪部分像素显示在屏幕上。

主要是计算出这个关系;

设滚动条的水平位置为sx,垂直位置为sy;

屏幕的size为:cx,cy

放大倍数为m_zoom;

那么此时:对应的原始像素的坐标为:

图像的像素size=i_width*i_height;

 

那么此时的局部原始size为(RGB缩放):

imgRect.left=(i_width-cx/m_zoom)*sx/Max_ScrollValue;

imgRect.top=(i_height-cy/m_zoom)*sy/Max_ScrollValue;

imgRect.width=cx/m_zoom;

imgRect.height=cy/m_zoom;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值