所以,我用C#做了一些簡單的圖像處理程序。例如,我想更改HSV顏色模型中的圖像顏色,將每個像素從RGB轉換回來。如何使用WinAPI以快速方式逐個像素地處理圖像?
我的程序通過用戶選擇加載一些圖片,並使用其圖形上下文將其顯示在窗體的一個面板中。然後,用戶可以通過移動滾動條,單擊按鈕,選擇一些圖像區域等來對此圖片進行操作。當他這樣做時,我需要實時更改所有圖片的像素。所以,我寫的是這樣的:
for (int x = 0; x < imageWidth; x++)
for (int y = 0; y < imageHeight; y++)
Color c = g.GetPixel(x, y);
c = some_process_color_function_depending_on_user_controls(c);
g.SetPixel(x, y)
即使我在存儲器(未在屏幕上)與圖形工作,職能GetPixel和SetPixel工作很慢(所以,我的程序運行很慢,我異形它,並解釋說這兩個函數最多會放慢我的程序)。所以,當用戶移動滑塊或檢查複選框時,我無法在幾秒鐘內處理大圖片。
請幫忙!我能做些什麼來使我的計劃變得更快?我不同意將其他第三方庫用於圖形或更改編程語言!
+1使用探查,不錯! – asawyer