在MFC中用GDI+实现图片浏览的放大镜效果
来源:互联网 发布:java远程socket 编辑:程序博客网 时间:2024/06/11 15:08
在MFC中用GDI+实现图片浏览的放大镜效果
放大镜效果的实现机制:首先在(以鼠标为圆心的)一个圆内绘制两倍大小的原图像,然后在剩下的区域内绘制原图像。
绘制放大镜区域内的图像的方法有多种,可以通过设置剪切区域(setclip()、IntersectClip()等等)的方法,绘制两倍大小的整个图像,但只取剪切区域内的一部分。也可以新建一个放大镜大小的图像,在其上绘制两倍图像,然后把新建的图像覆盖到原图上。第一种方法需要重新计算两倍大小图像的左上角坐标。第二种方法绘制的区域要小,但由于放大镜区域是圆形的,新建的图像是方形的,仍然需要设置剪切区域为圆形。
注意:以下代码应放在窗体的OnMouseMove(UINT nFlags, CPoint point)方法中(响应WM_MOUSEMOVE事件)
假设你已经在MFC中实现了图片浏览功能,graphics为绘图的Graphics对象指针,p_img为所绘制图片的指针,picRect为绘制原图像的区域(Rect对象)
Rect *magnifier; //方形区域
GraphicsPath path; //放大镜圆周
Region *region; //放大镜区域
magnifier=new Rect(point.x-100,point.y-100,200,200); //生成方形区域
path.AddEllipse(*magnifier); //根据方形区域生成圆周
region=new Region(&path); //构造放大镜区域
graphics->IntersectClip(region); //设置剪切区域
graphics->DrawImage(p_img,2*picRect.X-point.x,2*picRect.Y-point.y,2*picRect.Width,2*picRect.Height); //绘制放大镜区域图像
graphics->ReSetClip();
graphics->ExcludeClip(region);
graphics->DrawImage(p_img,picRect); //绘制原图
效果如下:
- 在MFC中用GDI+实现图片浏览的放大镜效果
- 图片实现放大镜效果
- JavaScript实现的放大镜放大图片效果
- Javascript实现图片的放大镜功能效果
- bitmapshader 实现图片的放大镜效果
- 原生JS实现图片的放大镜效果
- 在MFC中用GDI+显示动态GIF图片
- MFC中用GDI+动态显示图片的例子
- JQzoom实现图片放大镜效果
- 图片放大镜效果-- jquery实现
- js实现图片放大镜效果
- javascript实现图片放大镜效果
- 实现放大镜的效果
- JQUERY实现鼠标悬停在图片上模拟放大镜效果
- 在VC6.0中用GDI+调用png图片实现半透明渐变的特效窗口
- 二:在VC6.0中用GDI+调用png图片实现半透明渐变的特效窗口
- 在VC6.0中用GDI+调用png图片实现半透明渐变的特效窗口
- 在VC6.0中用GDI+调用png图片实现半透明渐变的特效窗口
- 扩展int13h调用详解
- SQL Server支持数据类型及保留字
- 硬盘MBR全面分析
- vector::clear()和vecotr::pop_back()对内存处理的不同
- 8088 汇编速查手册
- 在MFC中用GDI+实现图片浏览的放大镜效果
- boot.bin
- shell: awk最新教程
- TCPDUMP的简单使用
- 手下的人不拿你当回事,怎么办?
- 思维转向 - 8个经典问题
- Spring 的好英文原版读物
- JAVA面试题集(1)
- 关于封装