![]() |
Re: PNG-Graphik über "System" laden ... ?
Liste der Anhänge anzeigen (Anzahl: 1)
Oder hier das
gruss Emil |
Re: PNG-Graphik über "System" laden ... ?
ich hab es schon über die gdi hinnbekommen, aber bisher ohne alpha wert...
ich weiß nicht woran es liegt ;-( wollte eigentlich nur ein png mit transparenz laden und als hintergrund für das fenster verwenden, nur irgendwie will er nicht ;-( das laden und das anzeigen hab ich hinnbekommen.. |
Re: PNG-Graphik über "System" laden ... ?
VCL oder nonVCL ?
|
Re: PNG-Graphik über "System" laden ... ?
nonvcl, ist das ganze, vcl währe ja easy oO
|
Re: PNG-Graphik über "System" laden ... ?
- 32 Bit-Bitmap erstellen mit CreateBitmap
- Window mit SetLayeredWindowAttributes und LWA_ALPHA bearbeiten - png_image laden - im WM_PAINT das Png aufs Fenster pappen - fertig :stupid: |
Re: PNG-Graphik über "System" laden ... ?
Hier ein Sample
mußt selbst übersetzen dürfte aber kein problem sein.
Delphi-Quellcode:
Alle Call's entfernen ..
Private Function MakeTrans(pngPath As String) As Boolean
Dim tempBI As BITMAPINFO Dim lngHeight As Long Dim lngWidth As Long Dim curWinLong As Long Dim img As Long Dim graphics As Long Dim winSize As Size Dim srcPoint As POINTAPI With tempBI.bmiHeader .biSize = Len(tempBI.bmiHeader) .biBitCount = 32 .biHeight = ScaleHeight .biWidth = ScaleWidth .biPlanes = 1 .biSizeImage = .biWidth * .biHeight * (.biBitCount / 8) End With mDC = CreateCompatibleDC(hdc) mainBitmap = CreateDIBSection(mDC, tempBI, DIB_RGB_COLORS, ByVal 0, 0, 0) oldBitmap = SelectObject(mDC, mainBitmap) Call GdipCreateFromHDC(mDC, graphics) Call GdipLoadImageFromFile(StrConv(pngPath, vbUnicode), img) Call GdipGetImageHeight(img, lngHeight) Call GdipGetImageWidth(img, lngWidth) Call GdipDrawImageRect(graphics, img, 0, 0, lngWidth, lngHeight) curWinLong = GetWindowLong(hwnd, GWL_EXSTYLE) SetWindowLong hwnd, GWL_EXSTYLE, curWinLong Or WS_EX_LAYERED SetWindowPos hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE srcPoint.x = 0 srcPoint.y = 0 winSize.cx = lngWidth winSize.cy = lngHeight With blendFunc32bpp .AlphaFormat = AC_SRC_ALPHA .BlendFlags = 0 .BlendOp = AC_SRC_OVER .SourceConstantAlpha = 255 End With Call GdipDisposeImage(img) Call GdipDeleteGraphics(graphics) Call UpdateLayeredWindow(hwnd, hdc, ByVal 0&, winSize, mDC, srcPoint, 0, blendFunc32bpp, ULW_ALPHA) End Function gruss Emil |
Re: PNG-Graphik über "System" laden ... ?
ok, danke werd ich mal so probieren, eine frage hätt ich aber noch ;-)
wie genau lade ich das png direkt aus der ressource?? |
Re: PNG-Graphik über "System" laden ... ?
Liste der Anhänge anzeigen (Anzahl: 1)
Natürlich UpdateLayeredWindow verwenden an stelle von SetLayeredWindowAttributes, ich Schussel. :wall:
Im Anhang ist eine Demo mit der du die Images auch aus der Resource laden kannst. |
Re: PNG-Graphik über "System" laden ... ?
Moin Matti,
wollte mir deinen Code mal zu lernzwecken angucken. Aber irgendwie hast du den Ordner "_unit" vergessen. Also, falls du den noch irgendwie haben solltest.... :stupid: |
Re: PNG-Graphik über "System" laden ... ?
Mhh er hat schon eine neuere Version erstellt, vllt ists Absicht das er den Ordner entfernt hat!
Wenn nicht, ich müsste glaub ich die alte Version noch irgendwo auf meinem alten Notebook haben, muss ich morgen mal durchforsten und suchen :) Wenn ichs finde kann ichs ja noch mal hier anhängen.... Wenn er damit einverstanden ist :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz