Einzelnen Beitrag anzeigen

Ares

Registriert seit: 5. Dez 2002
269 Beiträge
 
#1

Eigene Komponte: Eigene Grafiken einbinden

  Alt 7. Mär 2007, 14:06
Hallo!

Ich hatte gestern ja schon geschrieben, dass ich mir zur Übung eine eigene Komponente schreiben will. Es geht um ein Panel das ein Hintergrundbild anzeigt. In der Ursprünglichen Version konnte man das Bild über die Eigenschaft HintergrundBild einstellen. Im nächsten Schritt soll das Hintergrundbild fest in der Kompontene verankert sein. Jedes Panel dieser Art soll also den gleichen, nicht änderbaren Hintergrund anzeigen.

Aber wie füge ich das Bild in die Komponente ein?

Ich habe folgendes Versucht:

Delphi-Quellcode:
unit MyPanelUnit;

{$R 'background.res' 'background.rc'}

interface

uses ExtCtrls, Graphics, Classes;

type
   TMyPanel = class(TPanel)
   private
     { private-Deklarationen }
     FHindergrundBild: TPNGObject;

   protected
     { protected-Deklarationen }
     procedure Paint; override;
   public
     { public-Deklarationen }
     constructor Create(AOwner: TComponent); override;
     destructor Destroy; override;

   published
     { published-Deklarationen }
   end;


procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Eigene', [TMyPanel]);
end;

constructor TMyPanel.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

  FHindergrundBild := TPNGObject.Create;

  //FHindergrundBild.LoadFromFile('MeinHintergrund.png');
  FHindergrundBild.LoadFromResourceName(HInstance, 'hintergrund');
end;

destructor TMyPanel.Destroy;
begin
  FHindergrundBild.Free;
  inherited;
end;

procedure TMyPanel.Paint;
begin
   inherited;
   Canvas.Draw(0, 0, FHindergrundBild);

   Canvas.TextRect(ClientRect, 5, 5, IntToStr(FHindergrundBild.Width)+'x'+IntToStr(FHindergrundBild.Height)) ;

   Canvas.Refresh;
end;

end.
Ich habe also einmal versucht die Grafik aus einer Datei zu laden und einmal eine Ressource-Datei anzubinden. Beides funktioniert nicht. Die Komponente lässt sich zwar fehlerfrei compilieren und ich kann auch entsprechende Panels auf ein Formular setzten und diesen compilieren, es wird jedoch kein Hintergrundbild angezeigt...

Die Ausgabe BreitexHöhe funktioniert aber korrekt. Es wird also die korrekte Breite und Höhe des Bildes ausgegeben. Irgendwie wird das Bild also richtig eingebunden aber nicht richtig ausgegeben.

Habt ihre eine Idee was ich falsch mache? Bzw. was ich anders machen muss?

Besten Dank
Ares
  Mit Zitat antworten Zitat