AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualStringTree mit PNG Grafik

Ein Thema von xZise · begonnen am 4. Apr 2009 · letzter Beitrag vom 6. Apr 2009
Antwort Antwort
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

VirtualStringTree mit PNG Grafik

  Alt 4. Apr 2009, 12:03
Hallo ihr,

ich habe eine sehr gute PNG Grafik gefunden, und möchte diese in mein VST so einbauen, wie es zum Beispiel bei TortoiseSVN ist, wenn man Dateien hoch-/runterlädt. Also habe ich in Background die Grafik geladen und in den Optionen "toShowBackground" und "toStaticBackground" gesetzt. Allerdings zeigt er mir nichts an. Sobald ich aber zum Beispiel eine Bitmap lade funktioniert es wie gewünscht. Was muss ich also machen um auch eine PNG Grafik einzubinden? Nun kann ich leider/möchte ich nicht auf Transparenz verzichten. Ich meine jetzt habe ich endlich die Möglichkeit (TImage kann die Grafik laden), also möchte ich sie auch nutzen

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#2

Re: VirtualStringTree mit PNG Grafik

  Alt 5. Apr 2009, 11:43
Hallo ihr,

hat den keiner eine Idee, woran es liegen könnte?

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: VirtualStringTree mit PNG Grafik

  Alt 5. Apr 2009, 23:22
Hi,
hab mal schnell was ausprobiert sollte eigentlich funzen:

Delphi-Quellcode:

uses
  pngimage;

function LoadPng(Width, Height: integer): TBitmap;
var
  Png : TPngImage;
begin
  Result := TBitmap.Create;
  Png := TPngImage.Create;
  try
    Png.LoadFromFile('Your Png Image');
    Result.PixelFormat := pf32bit;
    Result.SetSize(Width, Height);
    Result.Assign(Png);
  except
    Result.Free;
    raise;
  end;
   FreeAndNil(Png);
end;

procedure TForm1.FormShow(Sender: TObject);
var
  BlendRec: TBlendFunction;
  TestBitmap: TBitmap;
begin

  BlendRec.BlendOp := AC_SRC_OVER;
  BlendRec.BlendFlags := 0;
  BlendRec.SourceConstantAlpha := 255;
  BlendRec.AlphaFormat := AC_SRC_ALPHA;

  TestBitmap := LoadPng(Img1.Width, Img1.Height);

  try
    Img1.Picture.Bitmap.Assign(TestBitmap);

    Windows.AlphaBlend(Img2.Canvas.Handle, 0, 0, TestBitmap.Width,
      TestBitmap.Height, TestBitmap.Canvas.Handle, 0, 0,
      TestBitmap.Width, TestBitmap.Height, BlendRec);

  finally
    TestBitmap.Free;
  end;
end;

procedure TForm1.vstPaintBackground(Sender: TBaseVirtualTree;
  TargetCanvas: TCanvas; R: TRect; var Handled: boolean);
var
  BlendRec: TBlendFunction;
begin
  Handled := True;

  BlendRec.BlendOp := AC_SRC_OVER;
  BlendRec.BlendFlags := 0;
  BlendRec.SourceConstantAlpha := 255;
  BlendRec.AlphaFormat := AC_SRC_ALPHA;

  Windows.AlphaBlend(TargetCanvas.Handle,
    Sender.ClientWidth - img2.Width, Sender.ClientHeight - img2.Height, Img2.Width,
    Img2.Height, Img2.Canvas.Handle, 0, 0,
    Img2.Width, Img2.Height, BlendRec);
end;
Benötige Komponenten Vst = VirtualStringTree
Img1 = TImage
Img2 = TImage

Ggf. sollte man noch prüfen ob die "Alphablend Function" verfügbar ist.

In TreeOptions des Vst bei PaintOptions noch toShowBackground = True einstellen.

Gruß
s!
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#4

Re: VirtualStringTree mit PNG Grafik

  Alt 5. Apr 2009, 23:42
Hmmm danke,

So schlecht sieht das Ergebnis nicht aus. Ich komme sogar um das zweite TImage drum herum. Ich werde mal gucken, ob ich das vielleicht direkt in das VST verankert kriege. Nur verschwindet das PNG unter den Einträgen des VST? Zudem ist es je nach Anzahl Einträge zu niedrig, sodass der untere Teil abgeschnitten wird. Aber das müsste behandle ich wohl in einem anderem Thread.

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: VirtualStringTree mit PNG Grafik

  Alt 5. Apr 2009, 23:59
Kein Problem.
Hab selber noch nicht damit rumgefummelt aber besser ist wohl anstelle von toShowBackground, toStaticBackround zu nehmen.
Dann musst du im PaintBackground Event des Tree die Höhe bzw Left in vst.BackgroundOffsetY angleichen dann sollte es funzen.

Ps.
Das 2. Image war nur rein zu Testzwecken eigentlich brauchst du gar keins.

Pps. Ne seltsam aber wie Du schon sagtes je mehr Items im Tree je weiter wird die Grafik nach unten verschoben!

Gruß,
s!
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#6

Re: VirtualStringTree mit PNG Grafik

  Alt 6. Apr 2009, 00:14
Hallo,

noch eine Sache Und zwar kann man einfach R dafür verwenden Ansonsten danke schonmal!

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#7

Re: VirtualStringTree mit PNG Grafik

  Alt 6. Apr 2009, 00:18
Zitat von xZise:
Hallo,

noch eine Sache Und zwar kann man einfach R dafür verwenden Ansonsten danke schonmal!

MfG
xZise
Hehe probiers einfach aus!

Gruß
s!
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#8

Re: VirtualStringTree mit PNG Grafik

  Alt 6. Apr 2009, 00:33
Naja es war keine Frage Sondern eine Feststellung ^^

Übrigens kann man die Testbitmap in Background.Bitmap speichern (mit Assign natürlich) und nachher dann in PaintBackground bequem darauf zurückgreifen!

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#9

Re: VirtualStringTree mit PNG Grafik

  Alt 6. Apr 2009, 00:42
Zitat von xZise:
Naja es war keine Frage Sondern eine Feststellung ^^

Übrigens kann man die Testbitmap in Background.Bitmap speichern (mit Assign natürlich) und nachher dann in PaintBackground bequem darauf zurückgreifen!

MfG
xZise
Yup
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz