2011-09-08 34 views
2

我是.net開發人員,我正在使用WindowsAPICodePackage WIC渲染圖像。我想使用自己的方法「SaveToFile」將WIC ImagingBitmap轉換爲gdi +位圖或MemoryStream。有沒有辦法?這裏是我的代碼,請大家幫忙:如何將WicImagingBitmap轉換爲Gdi +位圖或流?

int width = 256; 
int height = 256; 

D2DFactory d2DFactory = D2DFactory.CreateFactory(D2DFactoryType.SingleThreaded); 
RenderTargetProperties renderTargetProperties = new RenderTargetProperties 
{ 
    PixelFormat = new PixelFormat(Format.B8G8R8A8UNorm, AlphaMode.Premultiplied), 
    Usage = RenderTargetUsages.GdiCompatible, 
    RenderTargetType = RenderTargetType.Software 
}; 

ImagingFactory wicFactory = ImagingFactory.Create(); 
ImagingBitmap imagingBitmap = wicFactory.CreateImagingBitmap((uint)width 
    , (uint)height, Microsoft.WindowsAPICodePack.DirectX.WindowsImagingComponent.PixelFormats.Pbgra32Bpp, BitmapCreateCacheOption.CacheOnLoad); 

RenderTarget renderTarget = d2DFactory.CreateWicBitmapRenderTarget(imagingBitmap, renderTargetProperties); 
renderTarget.BeginDraw(); 

Random r = new Random(); 
for (int i = 0; i < 10; i++) 
{ 
    renderTarget.DrawLine(new Point2F(r.Next(0, width), r.Next(0, height)), new Point2F(r.Next(0, width), r.Next(0, height)) 
     , renderTarget.CreateSolidColorBrush(new ColorF(1, 1, 0)), 4); 
} 
renderTarget.EndDraw(); 

string imageFilePath = @"c:\wic.png"; 
imagingBitmap.SaveToFile(wicFactory, ContainerFormats.Png, imageFilePath); 

感謝,

回答