2009-11-11 36 views
0

我需要將XAML格式的大量圖標(全部僅使用畫布)轉換爲位圖格式。將XAML-Canvas轉換爲位圖

有沒有人知道這樣做的工具? 我只找到xamltoys/xaml2emf。這工作但不正確 - 顏色混亂,分辨率非常低。

回答

0

這段代碼我做只會讓您保存任何 FrameworkElement的磁盤:

Public Shared Sub SaveImageOfControlToDisk(ByVal MyControl As FrameworkElement, ByVal FileName As String) 
    Dim ThisVisualBrush As New VisualBrush(MyControl) 
    Dim ThisDrawingVisual As New DrawingVisual() 
    Dim dc As DrawingContext = ThisDrawingVisual.RenderOpen() 
    dc.DrawRectangle(ThisVisualBrush, Nothing, New Rect(New Point(), New Size(MyControl.ActualWidth, MyControl.ActualHeight))) 
    dc.Close() 
    Dim render As New RenderTargetBitmap(MyControl.ActualWidth, MyControl.ActualHeight, 96, 96, PixelFormats.Pbgra32) 
    render.Render(ThisDrawingVisual) 
    Dim PngEncoder As New PngBitmapEncoder() 
    PngEncoder.Frames.Add(BitmapFrame.Create(render)) 
    Dim ThisStream As New IO.FileStream(FileName, IO.FileMode.Create) 
    PngEncoder.Save(ThisStream) 
    ThisStream.Flush() 
    ThisStream.Close() 
End Sub