在Silverlight的WriteableBitmap中将Int转换为C#中的颜色

在Silverlight 3中,现在有一个WriteableBitmap,它提供了get / put像素的能力.这可以这样做:

// setting a pixel example
WriteableBitmap bitmap = new WriteableBitmap(400,200);
Color c = Colors.Purple;
bitmap.Pixels[0] = c.A << 24 | c.R << 16 | c.G << 8 | c.B;

基本上,设置像素涉及设置其颜色,并将alpha,red,blue,green值分解为整数.

我的问题是,你怎么把一个整数转回一个颜色?在这个例子中缺少的是什么:

// getting a pixel example
int colorAsInt = bitmap.Pixels[0];
Color c;
// TODO:: fill in the color c from the integer ??

感谢你可能有任何帮助,我只是没有在我的位移,我相信别人会遇到这个路障在某个时候.

解决方法

使用反射镜我发现如何在标准的.net调用中解析R,G,B(在Silverlight中不可用):

System.Drawing.ColorTranslator.FromWin32()

从那以后我猜想如何获得alpha通道,这样做的工作:

Color c2 = Color.FromArgb((byte)((colorAsInt >> 0x18) & 0xff),(byte)((colorAsInt >> 0x10) & 0xff),(byte)((colorAsInt >> 8) & 0xff),(byte)(colorAsInt & 0xff));

相关文章

如何在Silverlight4(XAML)中绑定IsEnabled属性?我试过简单的...
我正在编写我的第一个vb.net应用程序(但我也会在这里标记c#,...
ProcessFile()是在UIThread上运行还是在单独的线程上运行.如...
我从同行那里听说,对sharepoint的了解对职业生涯有益.我们不...
我正在尝试保存一个类我的类对象的集合.我收到一个错误说明:...
我需要根据Silverlight中的某些配置值设置给定控件的Style.我...