AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi [UpdateLayeredWindow] Vergrößerbare Form realisieren
Thema durchsuchen
Ansicht
Themen-Optionen

[UpdateLayeredWindow] Vergrößerbare Form realisieren

Ein Thema von Yheeky · begonnen am 16. Jun 2007 · letzter Beitrag vom 30. Jun 2007
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#11

Re: [UpdateLayeredWindow] Vergrößerbare Form realisieren

  Alt 17. Jun 2007, 14:50
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:
1-2
| |
4-3
(kleiner geht es nur noch, wenn du einfach nur eine Ecke speicherst und diese dann drehst)
z.B. soetwas generieren lassen:
Code:
1-----------2
|           |
|           |
|           |
|           |
|           |
4-----------3
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#12

Re: [UpdateLayeredWindow] Vergrößerbare Form realisieren

  Alt 17. Jun 2007, 15:56
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.
Angehängte Grafiken
Dateityp: png screen_166.png (42,4 KB, 61x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#13

Re: [UpdateLayeredWindow] Vergrößerbare Form realisieren

  Alt 17. Jun 2007, 16:14
Rufst du "Zeichnen" auch im OnPaint des Images auf? Sonst ist es logisch, dass der Inhalt ein wenig statisch ist .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#14

Re: [UpdateLayeredWindow] Vergrößerbare Form realisieren

  Alt 17. Jun 2007, 17:01
TImage hat kein OnPaint
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#15

Re: [UpdateLayeredWindow] Vergrößerbare Form realisieren

  Alt 17. Jun 2007, 17:15
Tut mir leid, habe die VCL nicht (mehr) im Kopf und auch keine OH installiert - versuch es mal mit OnResize, sollte dieses Event existieren .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#16

Re: [UpdateLayeredWindow] Vergrößerbare Form realisieren

  Alt 17. Jun 2007, 17:43
Das Image hat kein Event, was das Zeichnen oder das Verändern der Größe abfragt.
Was nun?
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#17

Re: [UpdateLayeredWindow] Vergrößerbare Form realisieren

  Alt 17. Jun 2007, 17:58
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 .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#18

Re: [UpdateLayeredWindow] Vergrößerbare Form realisieren

  Alt 18. Jun 2007, 00:24
Ja, habe ich ja versucht, aber bei Form1.OnResize bzw. OnPaint geht´s nicht
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#19

Re: [UpdateLayeredWindow] Vergrößerbare Form realisieren

  Alt 18. Jun 2007, 06:36
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

http://www.delphipraxis.net/download.php?id=22588

gruss Emil
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#20

Re: [UpdateLayeredWindow] Vergrößerbare Form realisieren

  Alt 18. Jun 2007, 09:14
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz