Zdravím, snažím se vytahat grafiku z UxTheme.dll. Dekalarace fcí UxTheme:
Module UnsafeNativeMethods
<DllImport("Uxtheme", EntryPoint:="OpenThemeData", CharSet:=CharSet.Unicode)> _
Public Function openThemeData(ByVal hWnd As IntPtr, ByVal classList As String) As IntPtr
End Function
<DllImport("Uxtheme", EntryPoint:="CloseThemeData", SetLastError:=True)> _
Public Function closeThemeData(ByVal hTheme As IntPtr) As <MarshalAs(UnmanagedType.Error)> Int32
End Function
<DllImport("Uxtheme", EntryPoint:="DrawThemeBackground", SetLastError:=True)> _
Public Function drawThemeBackground(ByVal hTheme As IntPtr, ByVal hDC As IntPtr, ByVal iPartId As Int32, ByVal iStateId As Int32, ByRef pRect As Rectangle, ByVal nullRECT As IntPtr) As <MarshalAs(UnmanagedType.Error)> Int32
End Function
End Module
Kreslení na Graphics Controlů není problém, schéma se na ně vykreslí. Když ale kreslím do graphics od Bitmap:
Dim a As New Bitmap(100, 26)
Dim g As Graphics = Graphics.FromImage(a)
g.Clear(Color.Lime)
drawThemeBackground(openThemeData(Me.Handle, "window"), g.GetHdc(), 3, 1, New Rectangle(0, 0, 100, 26), IntPtr.Zero)
a.Save("c:/test.bmp", Imaging.ImageFormat.Bmp)
Nic se nevykreslí.. Zkoušel jsem nechat kreslení na Control a do Bitmap vykreslit přes <Control>.DrawToBitmap(), ale efekt je stejný. Zatím to řeším tak, že vykreslím na Control a vykreslené zkopíruji přes Graphics.CopyFromScreen, ale to rozhodně není použitelné řešení. Netušíte, proč se mi nevykreslí schéma do Graphics od Bitmap? Děkuji
|