psDashDotDot
-
ich zeichne eine linie mit style: psDashDotDot
bsp.
|
:
|
:so weit, so gut
nun möchte ich diese linie in stärke 2 oder 5 px zeichnen
hat schon jemand mein problem erkannt?
problem ist, dass bei linienstärke >1, können keine punktierten oder gestrichelten Linien gezeichnet werden.
hat jemand eine originale idee dazu.
mir selbst, außer die linie mit FillRect() zusammen zu basteln, fällt nix ein
-
Mit LineTo() zusammenstückeln?
-
'ne Grobidee hätt ich anzubieten - im Prinzip wohl ähnlich, wie es @Jansen vorschlägt, vielleicht nur anders ausgedrückt. ZB. bei Pen->Width=5 müßtest du 5 Linien zeichnen.
Im OnMouseDown je Pen->Width ein MoveTo und LineTo.
Im OnMouseMove dto. Beim Aufziehen movest du ja auch immer wieder auf die Ausgangspositionen und löscht im XOR-Mode.
Im Prinzip würde der Vorgang nur definiert vervielfacht. Kannst vielleicht mal mit einer einfachen Structur für Pen->Width=2 testen. Ob es klappt?... Hab sowas noch nicht probiert.
-
wenn ich mit LineTo() meine linie zeichne bekomme ich ein weiteres problem und zwar
sagen wir ich zeichne eine strichlinie mit witdh 10
die striche sind selbst ca 10 px lang, also wenn die linie fertig ist, habe ich keine strichlinie sonder eine punktierte[ Dieser Beitrag wurde am 27.03.2003 um 18:14 Uhr von Xqgene editiert. ]
-
Das "Problem" hättest du doch genauso, wenn psDashDotDot mehr als 1 Pixel erlauben würde. Ich war eigentlich davon ausgegangen, dass du die Strichlänge auch proportional an die Pinselbreite anpasst, alles andere wäre doch unlogisch.
-
das ist richtig, aber mit FillRect() macht das weniger arbeit als mit LineTo()
-
Wie sollen denn bitte die Dots aussehen bei z.B. Pinselstärke 4???
-
mit FillRect() als 4x4 Rectecke
oder mit RoundRect als Kreise
-
Vielleicht mit einem PunkteArray?
Du zeichnest zB. für die ersten 8 Punkte (Rect, RoundRect oder Ellipse), für 4 Punkte Pause usw.Wie groß wird das Aray sein müssen? Ein dynamisches wird Sinn machen.
Das ganze sollte auch rückwärts gehen. Beim Zeichnen wird normalerweise die beste Positionierung durch Hin- und Herbewegen gesucht. Ein falscher Ansatz sollte sich möglichst beim Zurückführen der Maus auf den Ausgangspunkt wieder löschen. Also nicht das Array beim Zurückgehen weiter vergrößern sondern die vorhandenen Punkte rückwärts auswerten und dabei löschen.