![]() |
Re: [UpdateLayeredWindow] Vergrößerbare Form realisieren
Erstelle ein PNG, das den kleinstmöglichen Rahmen beinhaltet. Daraus kannst du nun alle benötigten Größen erstellen, indem du die Kanten streckst (kachelst). Es seien 1,2,3,4 die Ecken und - & | die Kanten, dann kannst du aus dem Ausgangsbitmap
Code:
(kleiner geht es nur noch, wenn du einfach nur eine Ecke speicherst und diese dann drehst)
1-2
| | 4-3 z.B. soetwas generieren lassen:
Code:
1-----------2
| | | | | | | | | | 4-----------3 |
Re: [UpdateLayeredWindow] Vergrößerbare Form realisieren
Liste der Anhänge anzeigen (Anzahl: 1)
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:
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.
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; |
Re: [UpdateLayeredWindow] Vergrößerbare Form realisieren
Rufst du "Zeichnen" auch im OnPaint des Images auf? Sonst ist es logisch, dass der Inhalt ein wenig statisch ist ;) .
|
Re: [UpdateLayeredWindow] Vergrößerbare Form realisieren
TImage hat kein OnPaint :???:
|
Re: [UpdateLayeredWindow] Vergrößerbare Form realisieren
Tut mir leid, habe die VCL nicht (mehr) im Kopf und auch keine OH installiert - versuch es mal mit OnResize, sollte dieses Event existieren :mrgreen: .
|
Re: [UpdateLayeredWindow] Vergrößerbare Form realisieren
Das Image hat kein Event, was das Zeichnen oder das Verändern der Größe abfragt.
Was nun? :roll: |
Re: [UpdateLayeredWindow] Vergrößerbare Form realisieren
Das Image bezieht seine Größe doch von einem gewissen anderen Control. Also könnte man statt Image.OnResize ebenso gut auf das Event jenes gewissen Controls zurückgreifen ;) .
Memo @myself: Die Unterschiede zwischen VCL und Windows Forms sind doch größer, als ich sie in Erinnerung hatte :duck: . |
Re: [UpdateLayeredWindow] Vergrößerbare Form realisieren
Ja, habe ich ja versucht, aber bei Form1.OnResize bzw. OnPaint geht´s nicht :-(
|
Re: [UpdateLayeredWindow] Vergrößerbare Form realisieren
Im grunde ist das doch nichts anderes als ein Skin der auf einer Form aufgesetzt wird.
Schau dir mal mein beispiel an vielleicht kannst du was von brauchen,. Welche Bitmaps du letztendlich verwendest liegt in deinen ermessen. Ist aber vom händling so gut wie das selbe ![]() gruss Emil |
Re: [UpdateLayeredWindow] Vergrößerbare Form realisieren
Also vom Zeichnen her klappt bei mir alles. Es geht lediglich darum, dass das Image beim Vergrößern der Form, auch nach wie vor die Zeichenfläche der Form benutzt. Das ist irgendwie nicht der Fall, wie man in meinem letzten Posting an dem Bild im Anhang erkennt kann.
Bei deinem Beispiel kann ich das leider auch nicht finden, weil du bei deiner Form auch keine Veränderung der Größe zulässt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz