我正在将我当前的(Silverlight)WP8.0应用程序移植到通用Windows应用程序中。在这个应用程序中,我有一个控件,允许用户使用自定义拨号控件。当刻度盘停止时,应用程序应该从该特定点(和底层图像)获得像素颜色。
在WP8.0中,我曾经做过以下事情:
WriteableBitmap wb = new WriteableBitmap(ColorWheelImage, null);
Color c = wb.GetPixel(pointX, pointY);
ColorWheelImage位于XAML中。
在WinRT中,WriteableBitmap仅支持new WriteableBitmap(int pixelWidth, int pixelWidth)
,而不像Silverlight那样设置图像。
我该如何解决这个问题......我似乎无法弄明白:(!
谢谢, 尼尔斯
答案 0 :(得分:3)
在WinRT中,WriteableBitmap
无法绘制视觉效果。相反,MS添加了新控件RenderTargetBitmap
。
RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(ColorWheelImage, width, height);
IBuffer pixelBuffer = await renderTargetBitmap.GetPixelsAsync();
但GetPixelsAsync()
为您提供IBuffer
,而不是int数组。要获得序数WriteableBitmap
,您可以使用WriteableBitmapEx。
var width = renderTargetBitmap.PixelWidth;
var height = renderTargetBitmap.PixelHeight;
var writeableBitmap = await new WriteableBitmap(1, 1).FromPixelBuffer(pixelBuffer, width, height);