墙裂建议界面版常驻人士讨论一下GDI/GDI+函数的使用
先贴一部分代码
CRect rect;
GetWindowRect(&rect);
CClientDC dc(this);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
if (1)
{
BITMAPINFO bitmapinfo;
bitmapinfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bitmapinfo.bmiHeader.biBitCount = 32;
bitmapinfo.bmiHeader.biHeight = rect.Height();
bitmapinfo.bmiHeader.biWidth = rect.Width();
bitmapinfo.bmiHeader.biPlanes = 1;
bitmapinfo.bmiHeader.biCompression = BI_RGB;
bitmapinfo.bmiHeader.biXPelsPerMeter = 0;
bitmapinfo.bmiHeader.biYPelsPerMeter = 0;
bitmapinfo.bmiHeader.biClrUsed = 0;
bitmapinfo.bmiHeader.biClrImportant = 0;
bitmapinfo.bmiHeader.biSizeImage =
bitmapinfo.bmiHeader.biWidth * bitmapinfo.bmiHeader.biHeight * bitmapinfo.bmiHeader.biBitCount / 8;
hBitmap=::CreateDIBSection (dcMem,&bitmapinfo, 0,NULL, 0, 0);
hOldBitmap = (HBITMAP)dcMem.SelectObject(hBitmap);
}
else
{
bmpMem.CreateCompatibleBitmap(&dc, rect.Width(), rect.Height());
pOldBmpMem = (HBITMAP)dcMem.SelectObject(&bmpMem);
}
新手(比如说我) 都一般使用判断下面的CreateCompatibleBitmap 来使用双缓存做贴图程序
但是这个星期写程序的时候 遇到了一个要常常刷新的窗口 CPU使用在很快刷新的情况下达到 40%~50%
后来无奈 也正好学学用CreateDIBSection 这个函数 结果发现是用CPU 20%~30% 我瞬间无言....
代码这么麻烦的函数居然要优秀这么多....
这不禁让我想起创建字体的函数 别人写的很多代码都使用 CreateFont() 这个复杂的函数 我一般直接CreatePointFont()
我不知道是不是这样速度会更快 但是我代码中的那个例子可是事实...
另外 如果把dcMem 定义成 类的成员变量 和函数的局部变量 CPU的使用差别貌似没区别
所以 墙裂建议界面版常驻人士讨论一下GDI/GDI+函数的使用!!! 有木有!!! 有木有!!!
比如说 您会常常使用什么函数 而不会使用另一种函数 如果有原因就更好了
之类之类的 您认为好的 都可以说说 :)
大家互相学习 希望大家不吝赐教

...全文
相关推荐
使用GDI+函数从资源中加载图片
其他绘图操作}```至此,你已经成功地使用GDI+函数库从资源中加载了图片,并在VC++程序中进行了显示。
GDI+ UpdateLayeredWindow的使用范例
然而,理解和运用这个函数需要对Windows API和GDI+有深入的理解,因此建议初学者从基础开始,逐步探索这个强大功能的潜力。
使用GDI+显示PNG图片
GDI+的基本使用,包括`Gdiplus::Graphics`、`Bitmap`和`DrawImage`等类和方法。2.
C# GDI+ 绘图函数
本文将对C# GDI+绘图函数的使用进行详细介绍,帮助读者更好地掌握如何通过GDI+技术绘制各种图形和图像。
GDI+帮助文档(中文)
- **适用读者**:包括但不限于C/C++程序员、图形设计师以及任何需要了解或使用GDI+进行开发的专业人士。


界面
