AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TImage.Canvas Resize

Ein Thema von Skyrunner2 · begonnen am 2. Mär 2005 · letzter Beitrag vom 1. Feb 2010
Antwort Antwort
Skyrunner2

Registriert seit: 11. Jan 2005
Ort: Bochum
50 Beiträge
 
Delphi 2006 Architect
 
#1

TImage.Canvas Resize

  Alt 2. Mär 2005, 14:49
hi,
Wie kann ich die größe des Canvas eines TImage Objektes ändern?

Das TImage Objekt hat den Align wert: alClient und in dem übergeordnetem form rufe ich bei resize folgende prozeduren auf:

Image1.Refresh;
Image1.Repaint;
Image1.Canvas.Refresh;


Image1 wird erfolgreich geändert (Ist ja alClient), jedoch Canvas nicht. Canvas bleibt bei der alten größe und graphik auserhalb diesen dimensionen wird nicht angezeigt.
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: TImage.Canvas Resize

  Alt 2. Mär 2005, 15:16
Die Frage ist nicht korrekt gestellt. Was willst du eigentlich erreichen ?
Canvas "Grösse" kann man nicht ändern. Grösse = Grösse des sichtbares Feldes vom Objekt deren Canvas Property ist zu benutzen, wenn du es so willst.
Und nochmals, was willst du eigentlich erreichen ?

[EDIT]

Delphi-Quellcode:
procedure TForm1.FormResize(Sender: TObject);
begin
Image1.Picture.Bitmap.Width := Width;
Image1.Picture.Bitmap.Height := Height;
Image1.Canvas.MoveTo(0,0);
Image1.Canvas.LineTo(Width,Height);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Canvas.Pen.Color := clBlue;
end;
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Skyrunner2

Registriert seit: 11. Jan 2005
Ort: Bochum
50 Beiträge
 
Delphi 2006 Architect
 
#3

Re: TImage.Canvas Resize

  Alt 2. Mär 2005, 15:46
also ich (miss)brauche das Timage feld nur um mit dem canvas zu arbeiten.

doch ich habe das problem das sobald ich die größe des forms,auf dem sich Timage befindet, ändere den dazugewonnenen canvas paltz nicht gebrauchen kann.


also form (größe 100X200) auf 200x200 ändern, und dann hab ich ja 100x200 pixel zum image felde (da es ja align=Client ist) dazgewonnen.

wenn ich jedoch nun eine linie von 0,0 zu 200,200 zeichne, so endet die linie bei 100,100 (also die maximale X stelle von vor der größen änderung)...

(siehe screenshot)



frage: Wie löse ich das oben genannte problem??!

notiz:
Image1.Refresh;
Image1.Repaint;
Image1.Canvas.Refresh;

Funktioniert NICHT
Miniaturansicht angehängter Grafiken
image1_219.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: TImage.Canvas Resize

  Alt 2. Mär 2005, 16:08
Zitat:
doch ich habe das problem das sobald ich die größe des forms,auf dem sich Timage befindet, ändere den dazugewonnenen canvas paltz nicht gebrauchen kann.
Ein Timage ist nur ein PlaceHolder für u.a. ein Bitmap. Wenn die Grösse von TImage geändert wird, wird dabei leider nicht die dazugehörige BitmapGrösse geändert. Das musst du manuell machen. (siehe oben)
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#5

Re: TImage.Canvas Resize

  Alt 26. Mär 2007, 12:30
Hallo,

ich habe das selbe Problem. Kurzzeitig verschwand es, jetzt ist es wieder da und lässt sich auch nicht mit dem oben genannten Code beheben.

Hier mein Code:
Delphi-Quellcode:
//Geht nicht:
imgLinieOben.Width:=Width;
imgLinieoben.Picture.Bitmap.Width:=Width;
i:=imgLinieOben.Width;

imgLinieOben.Left:=0;
imgLinieOben.Canvas.MoveTo(0,0);
imgLinieOben.Canvas.LineTo(i,0);
imgLinieOben.Height:=1;


//Geht:
imgLinieUnten.Width:=imgLinieOben.Width;
//imgLinieUnten.Picture.Bitmap.Width:=imgLinieOben.Picture.Bitmap.Width;
imgLinieUnten.Left:=imgLinieOben.Left;
imgLinieUnten.Canvas.MoveTo(0,0);
imgLinieUnten.Canvas.LineTo(i,0);
imgLinieUnten.Height:=1;
Echt abgefahren. Mit dem oberen Code passiert nichts, bzw. ich sehe keine Linie und kein Image, auch nicht wenn ich die Höhe mal auf 100 schalte. Die untere Linie wird korrekt gezeichnet, allerdings eben nicht in der richtigen Breite, weil Picture.Bitmap.Width nicht angeglichen wird. Das komische daran ist, dass es vor 10 Minuten schonmal funktioniert hat, ich aber nicht mehr weiß, was ich daran geändert haben sollte. Könnt ihr mir da vielleicht weiterhelfen?

greetings ...
Achim
  Mit Zitat antworten Zitat
Masteric

Registriert seit: 1. Aug 2007
Ort: Melsungen
155 Beiträge
 
Delphi 7 Professional
 
#6

Re: TImage.Canvas Resize

  Alt 1. Feb 2010, 01:43
Das Thema ist zwar schon ein paar Jahre alt aber ich bin drüber gestolpert als ich das PRoblem selber hatte und daher will ich mal eine Lösung posten,
also es geht schon man muss nur auch das Bitmap vergrößern

Beispiel:
Delphi-Quellcode:
Image1.Width:=form1.clientWidth;
Image1.Height:=form1.clientHeight;
Image1.Picture.Bitmap.Width:=Image1.Width;
Image1.Picture.Bitmap.Height:=Image1.height;
Jetzt ist das Image1, samt Canvas so groß wie das Form1.

Gruß Masteric
"Programmieren ist eine der universellsten, allübergreifendsten und höchsten von Menschen erreichten Formen der Kreativität."
Nur weil Gott die Welt in 6 Tagen erschaffen hat, heisst das nicht, dass Informatiker alles in 6 Tagen programmieren können.
  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 09:22 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