Thema: Delphi canvas probleme, oder so

Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: canvas probleme, oder so

  Alt 24. Aug 2007, 15:12
Mit dem Handle ist nur ein Trick
Du musst mit dem Handle nix machen. Einfach nur das Handle verlangen und dann wegschmeissen. Denn wenn du das Handle verlangst und das Icon ist grad neu geladen (ergo: er hat weder ein Handle noch die richtigen Angaben zu Höhe und Breite) dann besorgt er sich ein Handle und nebenbei schaut er noch nach, wie groß eigentlich das Icon ist. Das ist quasi von hinten durch die Brust ins Auge.

du musst also vorm ersten abfragen der Abmaße mal das Handle verlangen. Machs doch im OnChangeereignis:
Delphi-Quellcode:
procedure TEButton.PictureChanged(Sender:Tobject);
begin
  if (FPicture<>nil) and (FPicture.Graphic.ClassName='TIcon')
    then FPicture.Icon.handle; //nur verlangen, du brauchst dir das Handle nicht zu merken
   //stell dir einfach vor durch diese Methode verlangst du vom Objekt mal in den Icon-Header zu schauen
end;
Im Constructor:
Delphi-Quellcode:
FGradientDown:=gdTopToBottom;
FPicture:=TPicture.Create;
Fpicture.OnChange:=Picturechanged; //neue Zeile
FPictureOver:=TPicture.Create;
Das musst du wahrscheinlich auch noch für die anderen beiden TPicture machen.

Das scheint ein Fehler in der Implementierung von TPicture bzw TIcon zu sein. Man geht einfach nicht davon aus, dass jemand die Abmaße braucht bevor das Bild gezeichnet wird.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat