【发布时间】:2022-01-20 13:17:30
【问题描述】:
我创建了一个代码来更改屏幕上的某些像素,但是当我想更改更多像素时,程序的性能会变慢。
你会看到小故障,它并不像它应该的那样漂亮。
问题:
我怎样才能提高代码的性能。
如果我想更改更多像素或最终更改所有像素屏幕。
我考虑过使用 SETBITMAPBITS,但我不确定它是如何工作的。我没有这方面的经验。
有没有其他解决办法?
我的代码示例:
#define _WIN32_WINNT 0x601
#include <windows.h>
#include <stdio.h>
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
HDC dng = GetDC(NULL);
while (true)
for (int i = 0; i <= 200; i++)
for (int j = 0; j <= 500; j++)
SetPixel(dng, i, j, RGB(0, 0, 255));
ReleaseDC(NULL, dng);
getchar();
}
【问题讨论】:
-
不要在
GetDC(NULL)上画画;而是创建您自己的窗口。使用SetDIBitsToDevice或StretchDIBits一次设置多个像素。 -
如果目标是绘制一个已售出的蓝色矩形,请使用
FillRect在一次调用中绘制整个对象。 -
@IgorTandetnik 嗨,感谢您知道它的分叉很好,但仍然存在一些故障。
-
@YakovGalka 感谢您的回答。我试着去做,但我在 BITMAPINFO 中实现和创建 BITMAP 时遇到了麻烦。如果您有任何示例代码,它将对我有所帮助。谢谢
-
@8888 在
BITMAPINFO中没有BITMAP。