AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Static Control PNG aufsetzen

Ein Thema von EWeiss · begonnen am 7. Jun 2019 · letzter Beitrag vom 8. Jun 2019
Antwort Antwort
Benutzerbild von EWeiss
EWeiss

Registriert seit: 16. Okt 2010
6.486 Beiträge
 
Delphi 2010 Architect
 
#1

Static Control PNG aufsetzen

  Alt 7. Jun 2019, 07:06
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
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.662 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Static Control PNG aufsetzen

  Alt 7. Jun 2019, 09:28
Meinst du mit "Static control" ein TGraphicControl? Also eines ohne Window handle?
Uli Gerhardt
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
83 Beiträge
 
#3

AW: Static Control PNG aufsetzen

  Alt 7. Jun 2019, 12:09
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.
  Mit Zitat antworten Zitat
Benutzerbild von EWeiss
EWeiss

Registriert seit: 16. Okt 2010
6.486 Beiträge
 
Delphi 2010 Architect
 
#4

AW: Static Control PNG aufsetzen

  Alt 7. Jun 2019, 14:49
Zitat:
Eventuell TStaticText? Dieses ist von TWindowControl abgeleitet
Gar nichts davon deshalb bin ich hier in der Rubrik Win32\64 API.
Meinst du mit "Static control" ein TGraphicControl? Also eines ohne Window handle?
Ich erkläre es anhand von einem Beispiel bzw. schaut auf den Quelltext.
Mein bestreben ist ein Image auf einem Nicht Client Area, Client Area, oder beides gleichzeitig zu zeichnen. PNG.. nicht Bitmap(bmp)

Delphi-Quellcode:
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;
Den Teil um die Region abhängig von der Farbe auszuschneiden habe ich mal deaktiviert weil es nicht funktioniert.
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

Geändert von EWeiss ( 7. Jun 2019 um 15:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von EWeiss
EWeiss

Registriert seit: 16. Okt 2010
6.486 Beiträge
 
Delphi 2010 Architect
 
#5

AW: Static Control PNG aufsetzen

  Alt 8. Jun 2019, 06:26
Scheint es wohl keine Lösung zu geben..
Habe es jetzt mal in nen Tab geknallt.

Zitat:
Das TImage ist eine GraphicControl ohne Window-Handle und daher geht das da.
Muss das mal unter die Lupe nehmen vielleicht kann ich da ja etwas ähnliches mit Win32 Mittlen erstellen. (für Tips bin ich nicht abgeneigt)
Ein WindowHandle benötige ich nicht weil meine Lib auf Sprites aufgebaut ist.

gruss
Miniaturansicht angehängter Grafiken
08.06.png  

Geändert von EWeiss ( 8. Jun 2019 um 06:40 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf