2017-01-15 1 views
0

Direct2D를 C#으로 시작하려고합니다.Direct2D로 PNG로드 및 그릴

this example app을 다운로드하여 사용했습니다.

응용 프로그램은 정상적으로 작동하지만 하드 드라이브에서 png 이미지를로드하여 표시해야합니다.

예제에서이 작업은 OnRender 함수에서 수행되며 RenderTarget.DrawBitmap 일 수 있습니다.

그러나 실제로 메모리에 PNG를로드하는 데 문제가 있습니다. 나는 그것을 위해 WICImagingFactory 같은 것을 사용한다,하지만 클래스를 찾을 수 없습니다 이해하고 나는 RenderTarget.DrawBitmap에서 요구하는 D2DBitmap 객체를 얻기 위해 그것을 사용하는 방법을 잘 모르겠어요

사람이 교류 # 예제 방법을 제공 할 수 이미지를 Direct2D에로드하려면?

+0

[SharpDX] (http://sharpdx.org/) 또는 [Win2D] (https://github.com/Microsoft/)를 보았습니까? Win2D)? –

+0

음, 방금 SharpDX로 재생을 마쳤습니다. –

답변

1

나는 SharpDX를 사용하여 끝났다. 여기

는 SharpDX로 이미지를로드하는 방법 좋은 예이다 : 또한 https://english.r2d2rigo.es/2014/08/12/loading-and-drawing-bitmaps-with-direct2d-using-sharpdx/

ImagingFactory imagingFactory = new ImagingFactory(); 
NativeFileStream fileStream = new NativeFileStream(@"D:\path\myfile.png", 
    NativeFileMode.Open, NativeFileAccess.Read); 

BitmapDecoder bitmapDecoder = new BitmapDecoder(imagingFactory, fileStream, DecodeOptions.CacheOnDemand); 
BitmapFrameDecode frame = bitmapDecoder.GetFrame(0); 

FormatConverter converter = new FormatConverter(imagingFactory); 
converter.Initialize(frame, SharpDX.WIC.PixelFormat.Format32bppPRGBA); 

newBitmap = SharpDX.Direct2D1.Bitmap1.FromWicBitmap(target, converter); 

target.DrawBitmap(newBitmap,new RawRectangleF(0,0,target.Size.Width,target.Size.Height),1,BitmapInterpolationMode.Linear); 

, 경우에 당신은 그래서 당신은 2 개의 다른 반 호환을 사용하여 끝나지 않는 SharpDX (로 전체 프로그램을 수행 할 프레임 워크) 다음은 어떻게 수행 할 수있는 작업 예제입니다. https://github.com/dalance/D2dControl