2012-06-25 84 views
1

我已閱讀了幾篇文章,這些文章是使用setpixel/getpixel的替代方法,但我沒有看到它們與我的問題有何關係。C#替代setpixel

我有一個多彩的圖像(取決於從數據庫中獲取的動態值)將每個像素顏色組的顏色更改爲新顏色。

假設我希望Argb值爲-989556的所有像素更改爲-16 & Argb值爲-1331的所有像素都更改爲-5383962。 我目前正在查看位圖中的每個像素並檢查它們的值,如果它們匹配,則使用setpixel更改它們。

我相信肯定有更好的方法,但我太朦朧了,看不到它!

+2

你使用GetPixel()/ SetPixel()做了什麼問題?請告訴我們您正在編碼的UI庫,WinForms,WPF,SilverLight ... – Slugart

+0

Set/getpixel在網絡上速度太慢(圖像是動態創建的)。只需通過.net Web應用程序使用它,通過通用處理程序提供圖像。 – T1gg3rB0unC3

+0

我會檢查出顏色轉換矩陣 - 謝謝你的建議.. – T1gg3rB0unC3

回答

0

如果你正在改變整個顏色,那麼你可能不想每個像素都改變它們。有一個顏色轉換矩陣,它可以讓你在幾行代碼中改變圖像中所有顏色的像素,而不必循環和操作圖像中的每個像素,這是非常慢的。

請參見以下鏈接:

http://msdn.microsoft.com/en-us/library/6tf7sa87(v=vs.71).aspx

http://msdn.microsoft.com/en-us/library/system.drawing.imaging.colormatrix.aspx

+0

只要OP可以滿足溢出值而不被上限,轉換就是一個好主意。我記得今年(4或更多)嘗試過,這對我來說是一個問題,所以我最終只是簡單地調用'LockBits'並直接在內存中完成這項工作。 –

+0

我從來沒有真正使用顏色矩陣類,但已經使用了各種形式的鎖定位或固定陣列,取得了巨大的成功。 –

0

使用位圖,BitBlt功能。我在here中展示了一個例子。