![]() |
Static Control PNG aufsetzen
Ich erstelle ein Static Control.
Das Problem ist das ich die Ecken des Bitmaps bzw.. des Static Control nicht transparent bekomme. Hmm.. TImage ist doch auch ein Static Control da funktionieren PNG's doch auch. Jemand ne Idee was ich da machen könnte? Wenn ihr Code Schnipsel dafür braucht dann poste ich die noch. gruss |
AW: Static Control PNG aufsetzen
Meinst du mit "Static control" ein TGraphicControl? Also eines ohne Window handle?
|
AW: Static Control PNG aufsetzen
Frage mich auch gerade was Du damit meinst. Eventuell TStaticText? Dieses ist von TWindowControl abgeleitet und hat daher ein Window-Handle. Das TImage ist eine GraphicControl ohne Window-Handle und daher geht das da.
|
AW: Static Control PNG aufsetzen
Zitat:
Zitat:
Mein bestreben ist ein Image auf einem Nicht Client Area, Client Area, oder beides gleichzeitig zu zeichnen. PNG.. nicht Bitmap(bmp)
Delphi-Quellcode:
Den Teil um die Region abhängig von der Farbe auszuschneiden habe ich mal deaktiviert weil es nicht funktioniert.
function TSkinStaticImage.CreateWindow(ParentHandle: HWND): HWND;
var hBmp: HBitmap; // ARgn: HRGN; begin if SkinEngine.RegisterButton(SKStaticImage) then begin // Erstelle das GDIPLUS image vom Dateinamen if (Width > 0) and (Height > 0) then begin hBmp := SkinEngine.FitBitmapFromFile(PWideChar(ImagePath), Width, Height); Img := GDIP_CreateImageFromHBITMAP(0, hBmp); end else Img := SkinEngine.AddResource(ParentHandle, PWideChar(ImagePath)); if Img <> 0 then begin Style:= WS_CHILD or WS_VISIBLE or SS_BITMAP; FHStaticImage := CreateWindowEx(WS_EX_TRANSPARENT, SKStaticImage, nil, Style, Left, Top, Width, Height, ParentHandle, DlgItemID, SkinEngine.skInstance, nil); if FHStaticImage <> 0 then begin SkinEngine.SetImageProperty(Handle, PROP_IMAGE_BACK, LONG_PTR(Img)); SkinEngine.SetImageProperty(Handle, PROP_STYLE, SS_BITMAP); SkinEngine.SetImageProperty(Handle, PROP_STATEMAX, 1); // SkinEngine.SetProperty(Handle, PROP_REGION, 1); if hBmp = 0 then GdipCreateHBITMAPFromBitmap(img, hBmp, 0); SendMessage(Handle, STM_SETIMAGE, WPARAM(IMAGE_BITMAP), LPARAM(hBmp)); // ARgn := SkinEngine.RegionFromBitmap(hBmp, $FF00FF); // SetWindowRgn(Handle, ARgn, true); // // DeleteObject(ARgn); end; end else begin // Lösche das Image SkinEngine.DeleteResource(Handle, Img); end; end; result := FHStaticImage; end; Wenn ich LoadImage\W verwenden würde mit dem Flag IMAGE_BITMAP akzeptiert diese nur ein reines Bitmap also PNG geht dann ja nicht. gruss |
AW: Static Control PNG aufsetzen
Scheint es wohl keine Lösung zu geben..
Habe es jetzt mal in nen Tab geknallt. Zitat:
Ein WindowHandle benötige ich nicht weil meine Lib auf Sprites aufgebaut ist. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:04 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