2010-06-29 40 views
1

我使用位圖類'.setPixel和.getPixel在.NET CF上繪製我的位圖字體。但它太慢了,在java中,我們通過一次調用getRGB()和setRGB()來設置顏色數組。 .NET CF中有這樣的東西嗎?我的要求僅僅是在指定的x,y處繪製一部分位圖到另一個位圖中。getPixel setPixel太慢了,是否有任何其他的.NET上的替代CF

編輯:源圖像具有透明度(不是alpha,但只是簡單的透明度)。

回答

3

不要滾動自己的循環。您應該能夠使用ImageAttributes屬性運行DrawImage方法,設置正確的顏色鍵(白色,紫色,無論您在圖像中使用什麼)。

imageAttributes = new ImageAttributes(); 
imageAttributes.SetColorKey(Color.Magenta, Color.Magenta); 

graphics.DrawImage(image, 
        destinationRectangle, 
        sourceRectangle.X, 
        sourceRectangle.Y, 
        sourceRectangle.Width, 
        sourceRectangle.Height, 
        GraphicsUnit.Pixel, 
        imageAttributes); 
+0

謝謝保羅。這正是我需要的。 – VOX 2010-06-29 22:20:42

2

不要用for循環和get/set像素來做自己的'blit'!

使用Graphics.FromImage()並使用DrawImage()將其他位圖繪製到其中。

+0

是的,但如何繪製一個位圖部分到另一個位圖? – VOX 2010-06-29 09:11:50

+0

@VOX使用DrawImage的其他重載http://msdn.microsoft.com/en-us/library/ms142041.aspx如果它是一個矩形部分 – 2010-06-29 09:19:09

+0

該部分是矩形的,但有一個白色空間(或紫色空間),我不想將它繪製到目標位圖,因爲它是位圖字體。對不起,如果我沒有說清楚。 – VOX 2010-06-29 09:22:40

0

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

相關問題