大图StretchBlt函数绘制提速

来源:互联网 发布:白金数据影评 编辑:程序博客网 时间:2024/05/17 05:56

MFC中CDC类的StretchBlt用于缩放绘图是挺好用的。

不过对于大像素的默认绘制速度比较慢,例如8196x8196像素,绘制起来很吃力。这种大图一般直接做底图或者一般都不会透明绘制的,所以默认绘制的方式是浪费。

其绘制模式一共有四个:

/* StretchBlt() Modes */#define BLACKONWHITE                 1#define WHITEONBLACK                 2#define COLORONCOLOR                 3#define HALFTONE                     4#define MAXSTRETCHBLTMODE            4#if(WINVER >= 0x0400)/* New StretchBlt() Modes */#define STRETCH_ANDSCANS    BLACKONWHITE#define STRETCH_ORSCANS     WHITEONBLACK#define STRETCH_DELETESCANS COLORONCOLOR#define STRETCH_HALFTONE    HALFTONE


一般默认的是 STRETCH_ANDSCANS,会对目标DC进行与操作,ORSCANS类似或操作,HALFTONE调和最慢,最快的是DELETESCANS直接覆盖。

一般情况下覆盖绘制足以满足要求。

SetStretchBltMode函数可以修改默认绘制方式。

所以,pDC->SetStretchBltMode(STRETCH_DELETESCANS);

之后再绘制,会有飞速提升。

0 0