2016-12-08 17 views
0

Windows.UI.Xaml.Media.Imaging.BitmapSource 개체를 Microsoft.Graphics.Canvas.ICanvasizeImage를 구현하는 클래스의 멤버로 변환 할 수 있습니까? 인터페이스 자체는 두 개의 직사각형 가져 오기 메소드로 구성됩니다. 그러나, 나는 나의 궁극적 인 목표는 내가 상상해야BitmapSource의 ICanvasBitmap

CanvasDrawingSession.DrawImage() 

비트 맵 픽셀에서 얻을 수있는 방법을 필요로 호출하는 것입니다으로 즉, 충분하지 않습니다 가정합니다.

+0

* BitmapSource *는 어디에서 왔습니까? – Romasz

+0

Splat 라이브러리. https://github.com/paulcbetts/splat - 일을 어렵게 만드는 근본적인 문제는 내가 여러 플랫폼에서 개발하고 있다는 것입니다. 그러나 나는 이것이 Windows의 경우 BitmapSource를 우회하는 것이 더 낫다는 것을 충분히 지저분하다고 결정했다. –

+0

나는 * BitmapSource * 대신 * SoftwareBitmap *을 사용하는 것이 더 쉬울 수도 있습니다. 따라서 곧바로 * CanvasImage *를 만들 수 있습니다. – Romasz

답변

1

Windows.UI.Xaml.Media.Imaging에서 픽셀을 가져올 수 없습니다. BitmapImage. 그러나 BitmapImage 대신 WriteableBitmap을 사용할 수 있습니다. 그런 다음 PixelBuffer 속성을 통해 픽셀 데이터를 가져올 수 있습니다.

그런 다음 CanvasBitmap.CreateFromBytes() 메서드를 사용하여 CanvasBitmap을 만들 수 있습니다. 그런 다음이 CanvasBitmap 객체를 매개 변수로 사용하여 CanvasDrawingSession.DrawImage() 메서드를 호출합니다.

1

외에도 위의 described by Xavier XiePixelBuffer를 사용에서, 당신은 당신의 ICanvasImage을 만들 SoftwareBitmap를 사용할 수 있습니다. 스트림이있는 경우 다음과 같이 할 수 있습니다.

BitmapDecoder decoder = await BitmapDecoder.CreateAsync(stream); 
CanvasDrawingSession.DrawImage(await decoder.GetSoftwareBitmapAsync(BitmapPixelFormat.Rgba16, BitmapAlphaMode.Premultiplied));