![]() |
Image ist zu klein
Hallo!
Ich habe ein Problem mit Images, ich gebe folgenden Befehl:
Delphi-Quellcode:
Er soll also ein Rechteck zeichnen, das die größe des Images hat und der Rand müsste zu sehen sein.
Ein_Image.Canvas.Rectangle(0,0,Ein_Image.Width,Ein_Image.Height);
Allerdings sieht man nur den oberen und den linken Rand. Das Image scheint rechts und unten abgeschnitten. Das, was man sieht ist auch viel kleiner, als das Images. Es wird also einfacht nur ein Teil des Images angezeigt und das kann ich mir absolut nicht erklären! Weiß hier vielleicht jemand weiter? Danke schonmal! |
Re: Image ist zu klein
Hi!
Zitat:
Wenn dein Bild 100 mal 100 Pixel groß ist, dann ist deine erste Zeile die Zeile 0 (wie du schon richtig erkannt hast) und die letzte die Zeile 99. Ebenso bei den Spalten. Demnach sollte
Delphi-Quellcode:
dein Problem lösen
Ein_Image.Canvas.Rectangle(0,0,Ein_Image.Width-1,Ein_Image.Height-1);
//edit: Alles Quatsch ... nur warum? :gruebel: |
Re: Image ist zu klein
Nee, so habe ich das nicht gemeint, das Image ist auch viel zu klein! Es sollte nach Berechnungen vorher viel größer sein und ich lass mir die Größe vorher mit
Delphi-Quellcode:
ausgeben. Das Eas ich sehe sind aber nur die Hälfte davon oder so..
showmessage(inttostr(Image.Width));
|
Re: Image ist zu klein
Bitte gib uns doch eine wenig Code, damit wir dir helfen können.
|
Re: Image ist zu klein
Hier ist der Code im Zusammenhang. Man müsste ein Quadrat der Größe (Dicke*(2*Sichtweite+1)) sehen, aber das auf dem Bildschirm ist kleiner und eben abgeschnitten.
Delphi-Quellcode:
// Images und Labels platzieren
for a := 0 to 5 do begin Ein_Image := TImage(form_Spiel.FindComponent('Image'+inttostr(a))); Ein_Label := TLabel(form_Spiel.FindComponent('Label'+inttostr(a))); if a <= high(Images) then begin Ein_Image.Height := Dicke*(2*Sichtweite+1); Ein_Image.Width := Dicke*(2*Sichtweite+1); Ein_Image.Top := 10+(((a) div horizontal)*(Ein_Image.Height + 30)); Ein_Image.Left := 10+(((a) mod horizontal)*(Ein_Image.Width + 10)); Ein_Image.Canvas.Pen.Color := clBlack; Ein_Image.Canvas.Brush.Color := clWhite; Ein_Image.Canvas.Rectangle(0,0,Ein_Image.Width,Ein_Image.Height); Ein_Image.Visible := True; Images[a] := -1; Ein_Label.Top := 10+(((a) div horizontal)*(Ein_Image.Height + 30))+Ein_Image.Height; Ein_Label.Left := 10+(((a) mod horizontal)*(Ein_Image.Width + 10)); Ein_Label.Visible := True; end else begin Ein_Image.Visible := False; Ein_Label.Visible := False; end; end; |
Re: Image ist zu klein
Hi!
Sicher, dass deine angenommenen Werte von Dicke und Sichtweite stimmen? Mal nen Breakpoint gesetzt und das ganze untersucht? Ciao Frederic |
Re: Image ist zu klein
Sie stimmen auf jeden Fall, das habe ich überprüft. Seltsam ist auch, dass es bei verschiedenen Werten für die Sichtweite und die Dicke manchmal abgeschnitten ist und manchmal nicht. Gibt es eine Maximalgröße für Images?
|
Re: Image ist zu klein
Hi!
Ja, die kannst du mit High(Integer) auslesen - aber die ist weit größer als jeder Bildschirm ;) Ciao Frederic |
Re: Image ist zu klein
Ist es Absicht, dass du hier
Delphi-Quellcode:
etwas anderes Abfragst als hier?
Ein_Image.Top := 10+(((a) div horizontal)*(Ein_Image.Height + 30));
Delphi-Quellcode:
Vielleicht liegt es ja auch daran, dass du dir einmal die untere und einmal obere Seite des Bildes ausgeben lässt...
Ein_Label.Top := 10+(((a) div horizontal)*(Ein_Image.Height + 30))+Ein_Image.Height;
Flare |
Re: Image ist zu klein
Ne, das ist schon richtig so, denn das zweite ist die Position von dem Label, das sich unter dem Image befindet. Hm, ich werd nochmal den restlichen Code durchgehen, vielleicht steckt der Fehler ja woanders...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 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