2014-08-31 155 views
0

我將我目前的(Silverlight)WP8.0應用程序移植到通用Windows應用程序。在這個應用程序中,我有一個允許用戶使用自定義撥號控件的控件。當轉盤停止時,應用程序應從該特定點(和底層圖像)獲取像素顏色。如何使用WinRT中的WriteableBitmapEx從圖像中的點獲取像素顏色?

在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

@chuex它不是重複的 – 2014-09-01 03:44:42

回答

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); 
相關問題