CPictureEx类实现GIF图片的缩放
关于CPictureEx类,网上很多文章了。但基于CPictureEx展示的GIF图片,却无法缩放,有些不方便。因项目中用到了这个类,而且要实现缩放的功能。于是研究了一下,现将相关代码写下来,仅供参考。
分两步:
1、主要是修改OnPaint函数,这个方法里使用了BitBlt函数,这是一个不能缩放图片的函数,我们使用StretchBlt来实现缩放。
2、使用SetPaintRect函数,此函数在CPictureEx类中。
看核心代码:
CPictureEx *m_Picture; void CAnimationPic::Draw(CDC *pDC) //绘制GIF动画 { CRect rect;//定义矩形大小 rect.TopLeft().x = m_nOrgX; rect.TopLeft().y = m_nOrgY; rect.BottomRight().x = m_nDestX; rect.BottomRight().y = m_nDestY; m_Picture = new CPictureEx(); ASSERT_VALID(m_Picture); m_Picture->Create(_T("GIF"),WS_CHILD|WS_VISIBLE|SS_NOTIFY,rect,pDC->GetWindow(),21234); m_Picture->Load(_T(m_AnimationPicName));//加载GIF路径 m_Picture->SetBkColor(RGB(255,255,255)); // m_Picture->SetBgMode(CPictureEx::BackgroundMode::TransparentBg, RGB(0, 0, 0)); pDC->SetBkColor(RGB(255,255,255)); m_Picture->SetPaintRect(&rect); m_Picture->Draw(); } void CPictureEx::OnPaint() { CPaintDC dc(this); // device context for painting LONG nPaintWidth = m_PaintRect.right-m_PaintRect.left; if (nPaintWidth > 0) { LONG nPaintHeight = m_PaintRect.bottom - m_PaintRect.top; // ::BitBlt(dc.m_hDC, 0, 0, nPaintWidth, nPaintHeight, // m_hMemDC, m_PaintRect.left, m_PaintRect.top, SRCCOPY); ::StretchBlt(dc.m_hDC, 0, 0, nPaintWidth,nPaintHeight, m_hMemDC, 0,0,m_PictureSize.cx, m_PictureSize.cy,SRCCOPY); } else { ::BitBlt(dc.m_hDC, 0, 0, m_PictureSize.cx, m_PictureSize.cy, m_hMemDC, 0, 0, SRCCOPY); } } //此函数供放大缩小按钮调用 void CAnimationPic::AdjustPositon(CRect rect) { if (m_Picture != NULL) { m_Picture->SetPaintRect(&rect); m_Picture->MoveWindow(&rect, TRUE); } }
CPictureEx类实现GIF图片的缩放相关推荐
- java 给图片加马赛克_java处理图片--图片的缩放,旋转和马赛克化
下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. 这是我自己结合网上的一些资料封装的java图片处理类,支持图片的缩放,旋转,马赛克化.(转 ...
- PHP 图片处理类(水印、透明度、缩放、相框、锐化、旋转、翻转、剪切、反色)...
最新PHP 图片处理类(水印.透明度.缩放.相框.锐化.旋转.翻转.剪切.反色) 以下是三零网为大家整理的最新PHP 图片处理类(水印.透明度.缩放.相框.锐化.旋转.翻转.剪切.反色)的文章,希望大 ...
- 图片的缩放(放大缩小)
package com.school.util;import java.awt.Graphics; import java.awt.Image; import java.awt.image.Buffe ...
- 【OpenCV新手教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放...
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨) ...
- 【OpenCV入门教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨) ...
- ImageIo类常用方法以及图片操作
ImageIo类常用方法以及图片操作 文章目录 ImageIo类常用方法以及图片操作 常用方法 图片操作 结尾 常用方法 读 从图中可以看到有三个重载的方法,返回的类型都是BufferedImage ...
- Java图片处理 - 缩放图片
Java图片处理 - 缩放图片 Java原生代码实现缩放图片 上一章原生代码中执行测试代码: public static void main(String[] args) {/*这儿填写你存放要缩小图 ...
- Qt 完成图片的缩放拖动
1. 事件和函数 主要使用事件paintEvent(QPaintEvent *event)和drawTiledPixmap函数实现绘图. paintEvent事件在改变窗口大小.移动窗口.手动调用up ...
- 《OpenCV3编程入门》学习笔记6 图像处理(六)图像金字塔与图片尺寸缩放
6.6 图像金字塔与图片尺寸缩放 6.6.1 图像金字塔 1.图像金字塔是图像中多尺度表达的一种,主要用于图像分割,是一种以多分辨率解释图像的结构,通过梯次向下采样获得分辨率逐步降低的图象集合 2.分 ...
最新文章
- Python之常用的高阶函数——abs、map、reduce、filter、sorted
- 【Qt】2D绘图之绘图中其它问题
- 为Linux命令起别名
- 台湾印象之六:林志玲神话
- 深圳本地网店代运营公司
- Spinner 学习笔记
- 算法竞赛入门经典 第二章总结
- (转)SpringMVC学习(六)——SpringMVC高级参数绑定与@RequestMapping注解
- numpy元素特定条件查找过滤
- WPF RadioButton按钮控件取消选中设置
- 认真与随便,结果有天壤之别
- List集合之LinkedList
- Mac OS X 下 U盘安装盘简易制作教程
- 王珊数据库系统概论第五版视频课程
- Tableau 10.5 安装教程
- 灭绝师太(女博士)、李莫愁(女硕士)、黄蓉(本科生)、小龙女(专科生)可爱
- Android 关于图片的压缩
- 离散信号的抽取和内插例题_抽取和内插
- 深圳市专精特新企业申报流程及奖励政策重点介绍,补贴20-50万
- 单像素成像图像智能处理算法