Okay, nächstes Problem
Ich habe mir mal eine neue Testanwendung geschrieben, mit der ich die einzelnen Teile zeichnen lasse. Die Funktion Zeichnen sieht so aus:
Delphi-Quellcode:
procedure TForm1.Zeichnen;
var ObenLinks, ObenMitte, ObenRechts : TImage;
FormBreite, ObenLinksBreite,
ObenMitteBreite, ObenRechtsBreite : SmallInt;
I: Integer;
begin
Image1.Canvas.FillRect(Rect(0, 0, Image1.Width, Image1.Height));
ObenLinks := TImage.Create(Form1);
ObenMitte := TImage.Create(Form1);
ObenRechts := Timage.Create(Form1);
ObenLinks.Picture.LoadFromFile('C:\Dokumente und Einstellungen\Chris\Desktop\SkinForm\ObenLinks.png');
ObenMitte.Picture.LoadFromFile('C:\Dokumente und Einstellungen\Chris\Desktop\SkinForm\ObenMitte.png');
ObenRechts.Picture.LoadFromFile('C:\Dokumente und Einstellungen\Chris\Desktop\SkinForm\ObenRechts.png');
ObenLinksBreite := ObenLinks.Picture.Width;
ObenMitteBreite := ObenMitte.Picture.Width;
ObenRechtsBreite := ObenRechts.Picture.Width;
FormBreite := Image1.Width;
// Ecke Links oben zeichnen
Image1.Canvas.Draw(0,0, ObenLinks.Picture.Graphic);
// Mitte zeichnen
for I := ObenLinksBreite to FormBreite - ObenRechtsBreite-1 do
Image1.Canvas.Draw(I, 0, ObenMitte.Picture.Graphic);
// Ecke Rechts oben zeichnen
Image1.Canvas.Draw(FormBreite - ObenRechtsBreite,0, ObenRechts.Picture.Graphic);
end;
Vom Prinzip her funktioniert es schon, aber wenn ich die Form vergrößere, scheint sich das Programm nur die Position vom Image zu merken, die es beim Start hatte (s.Screenshot). Image1 ist bei Align auf alClient gestellt.