我創建了一個代碼來更改螢屏上的某些像素,但是當我想更改更多像素時,程式的性能會變慢。您會看到小故障,但它并不像它應有的那么漂亮。
問題:
我怎樣才能提高代碼的性能。
如果我想更改更多像素或最終更改螢屏上的所有像素。
我想過使用 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();
}
uj5u.com熱心網友回復:
如果我理解正確,您是在嘗試在視窗外繪圖。
每次SetPixel您發送 WM_PAINT 訊息時,都會重新繪制整個視窗。這會大大減慢您的程式速度。您應該做的是使用 GDI、GDI 或 Direct2D 創建位圖或矩形,然后立即繪制它。
在窗外畫畫從來都不是一個好主意。你無法控制你剛剛畫的東西,當有東西打斷它時它就會消失。
如果你想要一個沒有標題欄的藍色塊,創建一個分層視窗,然后創建一個矩形并繪制它。
Microsoft 的檔案可能不是教程,但它提供了豐富的資訊。在嘗試理解某些內容時,您應該查看檔案。
這是 Direct2D 檔案:https : //docs.microsoft.com/en-us/windows/win32/direct2d/getting-started-with-direct2d
以下是如何創建分層視窗:https : //docs.microsoft.com/en-us/windows/win32/winmsg/window-features#layered-windows
編輯:評論說SetPixel不會發送WM_PAINT. 我要說的是SetPixel重新粉刷窗戶。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/386827.html
