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