Autor Beitrag
holger
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 46

W2K pro, XP pro
Delphi 6, Delphi 2007
BeitragVerfasst: Mi 27.11.02 15:50 
Image / Canvas

Ich möchte während des Programmverlaufes die Größe eines Images ändern.
Das mache ich z.Z. einfach durch Verändern von "image1.height" bzw. "image1.width".
Beim vergrößern wächst jedoch die Leinwand "canvas" nicht mit.

Ein LineTo.. welches über die alten Imagegrenzen hinaus ragt wird nur bis zu den alten Grenzen

hin angezeigt.

Bei einem geladenen Bitmap tritt das Problem nicht auf.

Wenn ich image1.stretch auf true setze ändert sich zwar die Größe von Canvas analog zum Image,

jedoch geht damit auch mein Maßstab verloren. Das will ich nun auch wieder nicht.

Wie muß ich vorgehen?
(Die Grafik darf bei der Aktion auch ruhig gelöscht werden / die kann ich ohne weiteres "neu

zeichnen")

Holger
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mi 27.11.02 16:53 
Hi!

Mal ne dusselige Frage: Woran erkennst du, daß der Canvas nicht mitwächst? TCanvas ist nämlich zunächst nur eine abstrakte Basisklasse, in der eben die Bearbeitungsfunktionen für das übergordnete Bild eingebunden werden.
Der Canvas kann sich gar nicht vergrössern oder verkleinern, er stellt nur eine Bearbeitungsschnittstelle dar.

Daher noch einmal meine Frage:
Woran erkennst du, daß der Canvas nicht mitwächst?

Cu,
Udontknow
holger Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 46

W2K pro, XP pro
Delphi 6, Delphi 2007
BeitragVerfasst: Do 28.11.02 00:17 
Die Frage ist gar nicht so dusselig. Ich weis es nämlich nicht. Ich vermute es nur.

Weil eben z.B.:
"Ein LineTo.. welches über die alten Imagegrenzen hinaus ragt wird nur bis zu den alten Grenzen angezeigt"

Wahrscheinlich packe ich das ganze falsch herum an.
Trotzdem erst mal vielen Dank
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Do 28.11.02 10:13 
Tatsächlich. Es verhält sich tatsächlich so, wie du sagst.

Die Lösung ist folgende:
Benutze nicht die Eigenschaft Image.Canvas und Image.Width/Height, sondern die Eigenschaften von Image.Picture.Bitmap.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
 
var Bitmap:TBitmap;
begin
  Bitmap:=Image1.Picture.Bitmap;
  Bitmap.Width:=20;
  Bitmap.Height:=20;
  Bitmap.Canvas.MoveTo(10,10);
  Bitmap.Canvas.LineTo(30,30);
  Bitmap.Width:=50;
  Bitmap.Height:=50;
  Bitmap.Canvas.MoveTo(10,20);
  Bitmap.Canvas.LineTo(40,40);
end;


Cu,
Udontknow