Creare un PngBitmapEncoder a partire da un FrameworkElement
Scritto da
Massimo Bonanni il
venerdì 23 settembre 2011
•
Linguaggio:
• Livello: 100
La seguente funzione consente di creare un oggetto
PngBitmapEncoder (con il quale è possibile generare,
ad esempio, una bitmap su disco) a partire da un Framework Element
della nostra interfaccia.
VB.NET
Public Shared Function GetImageEncoderFromControl(ByVal controlToConvert As FrameworkElement,
ByVal pixelFormat As System.Windows.Media.PixelFormat,
Optional ByVal xDpi As Double = 96D,
Optional ByVal yDpi As Double = 96D) As PngBitmapEncoder
Dim imageEncoder As PngBitmapEncoder = Nothing
Try
Dim transform = controlToConvert.LayoutTransform
Dim sizeOfControl = New Windows.Size(CInt(controlToConvert.ActualWidth),
CInt(controlToConvert.ActualHeight))
controlToConvert.Measure(sizeOfControl)
controlToConvert.Arrange(New Rect(sizeOfControl))
Dim videoxDpi, videoyDpi As Double
GetVideoResulution(videoxDpi, videoyDpi)
Dim renderBitmap = New RenderTargetBitmap(CInt(sizeOfControl.Width * xDpi / videoxDpi),
CInt(sizeOfControl.Height * yDpi / videoyDpi),
xDpi,
yDpi,
pixelFormat)
renderBitmap.Render(controlToConvert)
Dim pngEncoder = New PngBitmapEncoder()
pngEncoder.Frames.Add(BitmapFrame.Create(renderBitmap))
imageEncoder = pngEncoder
Catch ex As Exception
imageEncoder = Nothing
End Try
Return imageEncoder
End Function
Per ottenere l'oggetto Bitmap è sufficiente recuperare la
proprietà Frame(0) dell'oggetto restituito.
Tags: