繁体   English   中英

C++ 如何设置像素 colors

[英]C++ How to set pixel colors

我创建了一个代码来更改屏幕上的某些像素,但是当我想更改更多像素时,程序的性能会变慢。 你会看到小故障,它并不像它应该的那样漂亮。

问题:
我怎样才能提高代码的性能。
如果我想更改更多像素或最终更改屏幕上的所有像素。
我考虑过使用 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();
}

如果我理解正确,您正在尝试在 window 之外绘制。

每次SetPixel都会发送一条 WM_PAINT 消息,该消息会重新绘制整个 window。 这会大大减慢您的程序。 您应该做的是使用 GDI、GDI+ 或 Direct2D 创建一个 bitmap 或一个矩形,然后立即绘制它。

在 window 之外绘图绝不是一个好主意。 你无法控制你刚刚画的东西,当有东西打断它时它会消失。

如果你想要一个没有标题栏的蓝色块,创建一个分层的 window,然后创建一个矩形并绘制它。

Microsoft 的文档可能不是教程,但内容丰富。 尝试理解某些内容时,您应该查看文档。

这是 Direct2D 文档: https://docs.microsoft.com/en-us/windows/win32/direct2d/getting-started-with-direct2d

这里是如何创建分层 window: https://docs.microsoft.com/en-us/windows/win32/winmsg/window-features#layered-windows

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM