AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi TImage: Größe ändern
Thema durchsuchen
Ansicht
Themen-Optionen

TImage: Größe ändern

Ein Thema von Sebastian Nintemann · begonnen am 13. Okt 2002 · letzter Beitrag vom 14. Okt 2002
Antwort Antwort
Sebastian Nintemann
(Gast)

n/a Beiträge
 
#1

TImage: Größe ändern

  Alt 13. Okt 2002, 16:18
Hallo!

Also, bin an der TImage-Komponente am verzweifeln. Ich kriegs einfach nicht richtig gebacken die zur Laufzeit zu vergrößern.
Ich hab ein schmales TImage (eine Art Lineal, die Einteilung etc zeichne ich zur Laufzeit darauf, Picture ist keins geladen).
Ich will nun zu Laufzeit die Größe (Breite) des Images ändern.

Verkleinern: funktioniert mit Image.Width := ...

Dann wieder vergrößern: Es lässt sich genauso vergrößern, gezeichnet wird aber nur bis zu der Breite wie es am Anfang war

Wie krieg ich es hin das TImage zu vergrößern so dass man dann auch in dem vergrößerten Bereich aufs Canvas zeichnen kann?

Width? Picture.Width? Picture.Graphic.Width?

Ich hoffe jemand kennt sich damit aus...

Gruß, Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 13. Okt 2002, 16:21
Wenn ich Dir einen Tipp geben darf, dann nutze die TPaintBox Komponente, die ist dafür geeigneter. Im Hintergrund erstelle ein TBitmap, welches Du dann im OnPaint Ereignis auf den PaintBox.Canvas kopierst.

Die Image Komponente ist wirklich nur gut, wenn Du auch ein Bild lädst.
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#3
  Alt 13. Okt 2002, 16:23
Hi,

warscheinlich hast Du noch Strech := False; //Sollte auf True, dann ist wieder das ganze Image füllbar.
Proportional könnte Dir auch noch weiter helfen.

Grüsse, Daniel
  Mit Zitat antworten Zitat
Sebastian Nintemann
(Gast)

n/a Beiträge
 
#4
  Alt 13. Okt 2002, 17:31
Stretch bewirkt keinen Unterschied, außer dass das Bild verzerrt wird.
Wenn ich width und height anpasse, wieso kann ich dann nicht in den neuen Bereich zeichnen (mit Canvas.XXX)?

Gruß, Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 13. Okt 2002, 17:36
TImage.Canvas ist direkt vom geladenen Bild (Picture) abhängig. Wenn kein Bild geladen wird, dann ist die Größe des Canvas unveränderlich gleich der Größe von TImage zum Zeitpunkt der Erstllung des Images. NIMM TPainBox
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Sebastian Nintemann
(Gast)

n/a Beiträge
 
#6
  Alt 13. Okt 2002, 17:37
Hui den ersten Beitrag (von sakura) hab ich übersehen
Ich hab eigentlich TImage genommen da dieses den Inhalt speichert, ich also nicht immer neu zeichnen muss. Aber so wies aussieht ists wohl doch einfacher mit ner PaintBox.
Danke nochmal sakura und Daniel!

Gruß, Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#7
  Alt 13. Okt 2002, 17:39
Wie, mich übersehen


......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Sebastian Nintemann
(Gast)

n/a Beiträge
 
#8
  Alt 13. Okt 2002, 18:03
Naja, direkt auf den Link aus der Benachrichtigungsmail geklickt, Browserfenster zu klein, nicht hochgescrollt...

Aber noch eine Frage zu TPaintBox:
Ich hab davon vier Stück auf dem Formular, vier Bitmaps die ich beim OnPaint in die entsprechende PaintBox zeichnen muss. Ist es sinnvoller für jede PaintBox einen eigenen OnPaint Event-handler zu schreiben oder für alle MainForm.OnPaint zu nehmen?

Gruß, Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#9
  Alt 14. Okt 2002, 09:10
Ich würde einen OnPaint Handler erstellen für die Paint Boxes, aber nicht das OnPaint Ereignis des Forms. Kurzes Beispiel
Code:
procedure BoxesOnPaint(Sender: TPaintBox);
var
  PB: TPaintBox;
  Bmp: TBitmap;
begin
  if Sender = PaintBox1 then begin
    PB := PaintBox1;
    Bmp := Bitmap1;
  end else if Sender = PaintBox2 then begin
    PB := PaintBox2;
    Bmp := Bitmap2;
  end else if Sender = PaintBox3 then begin
    PB := PaintBox3;
    Bmp := Bitmap3;
  end else if Sender = PaintBox4 then begin
    PB := PaintBox4;
    Bmp := Bitmap4;
  end else begin
    ...
    Exit;
  end;
  ...
  PB.Canvas.CopyRect(R, Bmp.Canvas, R); // R = TRect
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:08 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