2017-01-15 23 views
0

Я начинаю с использования Direct2D с C#.Загрузить и нарисовать png с Direct2D

Я загрузил и использовал this example app.

Приложение работает отлично, но мне также нужно его загрузить изображения png с жесткого диска и отобразить их.

В образце это будет сделано в функции OnRender, возможно, с RenderTarget.DrawBitmap.

Однако у меня возникла проблема с загрузкой png в память. Я понимаю, что я должен использовать что-то вроде WICImagingFactory для него, но я не могу найти класс, и я не знаю, как использовать его, чтобы получить D2DBitmap объект, который необходим RenderTarget.DrawBitmap

Кто может предоставить C# пример того, как загрузить изображение в 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); 

Кроме того, в случае, если вы хотите, чтобы сделать всю программу с SharpDX (так что вы не до конца, используя 2 разный пол-несовместимый рамки), вот пример того, как это можно сделать: https://github.com/dalance/D2dControl

 Смежные вопросы

  • Нет связанных вопросов^_^