博客日历
2024年11月 | ||||||
一 | 二 | 三 | 四 | 五 | 六 | 七 |
28 | 29 | 30 | 31 | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 1 |
存档
2024年03月 04月 05月 2021年
01月 02月 11月 12月 2020年
02月 03月 04月 05月 06月 07月
09月 2018年
09月 2017年
01月 02月 07月 2016年
01月 04月 07月 08月 11月 12月
2015年
01月 02月 03月 05月 09月 10月
11月 2014年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2013年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2012年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2011年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2010年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2009年
03月 04月 05月 06月 07月 08月
09月 10月 11月 12月
SetPixel 速度极慢的处理方法
//DWORD dwTick = GetTickCount(); Gdiplus::BitmapData* bitmapData = new Gdiplus::BitmapData(); Gdiplus::Rect rect(0, 0, nWidth, nHeight); pBitmapBlock->LockBits(&rect, Gdiplus::ImageLockModeRead | Gdiplus::ImageLockModeWrite, PixelFormat32bppRGB, bitmapData); UINT* pixels = (UINT*)bitmapData->Scan0; for (int y = 0; y < nHeight; y++) { for (int x = 0; x < nWidth; x++) { // Color clrPixel; // pBitmapBlock->GetPixel(x, y, &clrPixel); // pBitmapBlock->SetPixel(x, y, Color(R, G, B)); // 速度极慢,不要使用 UINT index = y * bitmapData->Stride / 4 + x; UINT pixel = pixels[index]; // 对像素进行处理 BYTE A = (pixel & 0xFF000000) >> 24; BYTE R = (pixel & 0xFF0000) >> 16; BYTE G = (pixel & 0xFF00) >> 8; BYTE B = (pixel & 0xFF); R = GRAY(R, G, B); G = R; B = R; // 处理之后写回 UINT pixelNew = A << 24 | R << 16 | G << 8 | B; pixels[index] = pixelNew; } } pBitmapBlock->UnlockBits(bitmapData); delete bitmapData; bitmapData = NULL; //printf("耗时 %d ms\n", GetTickCount() - dwTick);
上一篇: 在 IE 控件中获取缓存文件的本地路径
下一篇: Linux 下压缩文件名乱码问题解决方法一:用7z压缩
分类:Win32/C++ 查看次数:2001 发布时间:2021/1/22 22:53:42