getPixel setPixel太慢了,.NET CF上还有其他选择

时间:2010-06-29 09:00:22

标签: c# compact-framework drawing

我正在使用Bitmap Class的.setPixel和.getPixel在.NET CF上绘制我的位图字体。但它太慢了,在java中我们有getRGB()和setRGB()通过一次调用来设置颜色数组。在.NET CF中是否有类似的东西。我的要求只是将一个位图的一部分绘制到指定x,y的另一个位图。

编辑:源图像具有透明度(不是alpha而只是简单的透明度)。

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:2)

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

使用Graphics.FromImage()并使用DrawImage()将其他位图绘制到其中。

答案 2 :(得分:0)

使用位图,BitBlt功能。我在here中展示了一个示例。