大图StretchBlt函数绘制提速

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);

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

你可能感兴趣的:(大图StretchBlt函数绘制提速)