![]() |
AW: Linien auf Canvas unterschiedlich breit dargestellt?
Und dir ist dabei noch nicht aufgefallen, daß alle Linien 1 Pixel zu breit sind?
Denn richtig wäre ja wohl
Delphi-Quellcode:
und nicht
for i := x to x + breite - 1 do
Delphi-Quellcode:
.
for i := x to x + breite do
10 bis 10+2 = 10 bis 12 = 10, 11 und 12 = 3 Wenn du mal direkt auf ein TPaintBox.Canvas (oder Dergleichen) zeichnen würdest, dann die Form und die IDE nebeneinander legst, dann kannst du den Code Zeile für Zeile debuggen und siehst direkt was da genau passiert. |
AW: Linien auf Canvas unterschiedlich breit dargestellt?
Ich denke mal, daß Du durchaus richtig siehst, nur wenn man Dein Bild (das zweite) vergrößert, dann sieht man einen Farbverlauf, der u.U. ein Strich sein könnte.
Wenn Du also die Ergebnisse Deines Programms beurteilen willst, solltest Du mit BMP arbeiten. JPG ist ganz klar nicht zu empfehlen. (vielleicht ist ja auch die komprimierung zu hoch gewählt....) Gruß K-H |
AW: Linien auf Canvas unterschiedlich breit dargestellt?
Was für Werte bekommst du denn für "breite1" und "breite2", einmal ohne und einmal mit den 5?
Wo wird eigentlich die Breite für Canvas gesetzt? |
AW: Linien auf Canvas unterschiedlich breit dargestellt?
Zitat:
Edit: Er läuft jede for-Schleife genau 7 Mal (in dem Beispielbild) durch! Jedoch erscheint die untere horizontale Linie erst beim 3. Durchlauf, die anderen schon beim 2.! Ein Anzeigefehler? Zitat:
Zitat:
in diesem Fall bekomme ich für breite1: 6 bzw 1 und für breite2: 5 bzw 0 Zitat:
|
AW: Linien auf Canvas unterschiedlich breit dargestellt?
Zitat:
Auf welche Position(en) wird denn beim 1. und 2. Durchlauf gezeichnet? Zitat:
Zitat:
Delphi-Quellcode:
Sprich dein Malstift malt 1 Pixel breit
Bild.Picture.Bitmap.Canvas.Pen.Width := 1;
|
AW: Linien auf Canvas unterschiedlich breit dargestellt?
Ist das Bild skaliert?
Die Skalierung im TImage ist schnell, aber "schlechter". Beim vergrößern werden ganze Zeilen doppelt gemalt und beim Verkleinern einfach weggelassen. |
AW: Linien auf Canvas unterschiedlich breit dargestellt?
Zitat:
Zitat:
Zitat:
Zitat:
|
AW: Linien auf Canvas unterschiedlich breit dargestellt?
Dann skalier die Grafik doch selbst mit StretchBlt, setz vorher den Mode auf HALFTONE und setz Stretch im Image auf false. Das wird noch mein Lieblinkslink:
![]() |
AW: Linien auf Canvas unterschiedlich breit dargestellt?
@DeddyH: Das ist mir zu hoch.
@all: Kann man auch direkt auf die Imagekomponente malen (also so, dass bei einer 500*500 Komponente ein Punkt in (250,250) bei jedem Bild in der Mitte der Komponente ist? Wenn ja wie? |
AW: Linien auf Canvas unterschiedlich breit dargestellt?
Liste der Anhänge anzeigen (Anzahl: 1)
Du brauchst doch nur 4 Parameter: Quell- und Zielgrafik (kann auch dieselbe sein) sowie maximale Breite und Höhe, Smooth ist per default true. Was ist daran zu hoch?
[edit] Ich habe mal eine Demo erstellt, die eine Bitmap erzeugt und im Speicher hält, zum Zeichnen eine Kopie dieser Bitmap erstellt, auf dieser herummalt, das dann skaliert und in einem Image darstellt. Der Code ist nicht frei von DRY, aber darauf kam es mir jetzt nicht an. [/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:12 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