AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Linien auf Canvas unterschiedlich breit dargestellt?
Thema durchsuchen
Ansicht
Themen-Optionen

Linien auf Canvas unterschiedlich breit dargestellt?

Ein Thema von loirad · begonnen am 5. Okt 2012 · letzter Beitrag vom 5. Okt 2012
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#11

AW: Linien auf Canvas unterschiedlich breit dargestellt?

  Alt 5. Okt 2012, 13:47
Und dir ist dabei noch nicht aufgefallen, daß alle Linien 1 Pixel zu breit sind?

Denn richtig wäre ja wohl for i := x to x + breite - 1 do und nicht 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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#12

AW: Linien auf Canvas unterschiedlich breit dargestellt?

  Alt 5. Okt 2012, 13:48
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#13

AW: Linien auf Canvas unterschiedlich breit dargestellt?

  Alt 5. Okt 2012, 13:50
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?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
loirad

Registriert seit: 25. Nov 2009
135 Beiträge
 
Delphi 6 Professional
 
#14

AW: Linien auf Canvas unterschiedlich breit dargestellt?

  Alt 5. Okt 2012, 14:02
Zitat:
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.
Jup werd ich gleich mal machen!

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:
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.
Das ist nur ein Bildschirmfoto! Ich seh es hier aber auf meinem Bildschirm sehr deutlich, dass es einen Dickenunterschied gibt!

Zitat:
Was für Werte bekommst du denn für "breite1" und "breite2", einmal ohne und einmal mit den 5?
Das ist von Bild zu Bild unterschiedlich -
in diesem Fall bekomme ich für breite1: 6 bzw 1 und für breite2: 5 bzw 0

Zitat:
Wo wird eigentlich die Breite für Canvas gesetzt?
Welche Breite? Was meinst du?
Wer Fehler findet darf sie behalten!

Geändert von loirad ( 5. Okt 2012 um 14:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#15

AW: Linien auf Canvas unterschiedlich breit dargestellt?

  Alt 5. Okt 2012, 14:12
Zitat:
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.
Jup werd ich gleich mal machen!

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?

Auf welche Position(en) wird denn beim 1. und 2. Durchlauf gezeichnet?

Zitat:
Was für Werte bekommst du denn für "breite1" und "breite2", einmal ohne und einmal mit den 5?
Das ist von Bild zu Bild unterschiedlich -
in diesem Fall bekomme ich für breite1: 6 bzw 1 und für breite2: 5 bzw 0
Was ist wenn null rauskommt?


Zitat:
Wo wird eigentlich die Breite für Canvas gesetzt?
Welche Breite? Was meinst du?
Ich vermiss irgendwo die Angabe:
Bild.Picture.Bitmap.Canvas.Pen.Width := 1; Sprich dein Malstift malt 1 Pixel breit
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<

Geändert von Helmi ( 5. Okt 2012 um 14:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#16

AW: Linien auf Canvas unterschiedlich breit dargestellt?

  Alt 5. Okt 2012, 14:14
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
loirad

Registriert seit: 25. Nov 2009
135 Beiträge
 
Delphi 6 Professional
 
#17

AW: Linien auf Canvas unterschiedlich breit dargestellt?

  Alt 5. Okt 2012, 14:28
Zitat:
Auf welche Position(en) wird denn beim 1. und 2. Durchlauf gezeichnet?
Das wird nicht angezeigt, da das Bild skaliert ist.

Zitat:
Was ist wenn null rauskommt?
Dann wird es, wie im 1. Bild nicht gemalt!

Zitat:
Ich vermiss irgendwo die Angabe:
Bild.Picture.Bitmap.Canvas.Pen.Width := 1; Sprich dein Malstift malt 1 Pixel breit
Das kannte ich noch garnicht - ich male dicker mit der for-Schleife

Zitat:
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.
Ja das Bild ist skaliert - wie umgehe ich das mit dem Weglassen? - Das wird wohl der Fehler sein, dass wichtige markierte Linien weggelassen werden!
Wer Fehler findet darf sie behalten!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#18

AW: Linien auf Canvas unterschiedlich breit dargestellt?

  Alt 5. Okt 2012, 14:39
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: StretchGraphic
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
loirad

Registriert seit: 25. Nov 2009
135 Beiträge
 
Delphi 6 Professional
 
#19

AW: Linien auf Canvas unterschiedlich breit dargestellt?

  Alt 5. Okt 2012, 14:48
@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?
Wer Fehler findet darf sie behalten!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#20

AW: Linien auf Canvas unterschiedlich breit dargestellt?

  Alt 5. Okt 2012, 14:52
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]
Angehängte Dateien
Dateityp: zip Stretch.zip (2,0 KB, 4x aufgerufen)
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH ( 5. Okt 2012 um 15:22 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 00:30 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