VectorDrawing und StrokePath Fehler

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
PeDre
Beiträge: 13
Registriert: 19.12.2014 11:22
Wohnort: Wien

VectorDrawing und StrokePath Fehler

Beitrag von PeDre »

Wenn man die Linienstärke beim VectorDrawing ändert, stimmen die Längen der Linien nicht mehr. Ich habe dazu in der Hilfe und im Forum nichts gefunden, und kann mir das nicht erklären. Ich wollte Messdaten damit anzeigen, aber so ist die Anzeige fehlerhaft. Gibt es da Tipps außer 2DDrawing zu verwenden?

Peter

Code: Alles auswählen

EnableExplicit
Define c.i

If OpenWindow(1, #PB_Ignore, #PB_Ignore, 400, 300, "VectorDrawing", #PB_Window_SystemMenu)
   CanvasGadget(2, 0, 0, 400, 300)
   
   If StartVectorDrawing(CanvasVectorOutput(2, #PB_Unit_Pixel))
      ; Linie oben für Kontrolle.
      MovePathCursor(30, 50.5)
      AddPathLine(370, 50.5) 
      VectorSourceColor($FF999999)
      StrokePath(1, #PB_Path_Default)
      
      ; Zickzack-Linie links.
      MovePathCursor(50, 50)
      For c = 55 To 200 Step 5
        If (c % 2)
           AddPathLine(c, 250) 
        Else
           AddPathLine(c, 50) 
        EndIf
      Next c
      VectorSourceColor($FF000000)
      StrokePath(1, #PB_Path_Default)
      
      ; Zickzack-Linie rechts.
      MovePathCursor(200, 50)
      For c = 205 To 350 Step 5
        If (c % 2)
           AddPathLine(c, 250) 
        Else
           AddPathLine(c, 50) 
        EndIf
      Next c
      VectorSourceColor($FF000000)
      ; StrokePath - bis 1.5 keine Änderung, ab 1.6 dickere Linie, aber falsche Längen!
      StrokePath(2, #PB_Path_Default)
      ;DotPath(2, 10)
      
      StopVectorDrawing()
   EndIf
   
   Repeat : Until (#PB_Event_CloseWindow = WaitWindowEvent())
EndIf

Zuletzt geändert von PeDre am 08.04.2017 11:15, insgesamt 2-mal geändert.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: VectorDrawing und StrokePath Fehler

Beitrag von STARGÅTE »

Dieses Verhalten ist normal wenn du #PB_Path_Default verwendest, weil es dann "spitze Ecken" gibt.
Diese Spitzen kannst du z.B. mit #PB_Path_DiagonalCorner oder #PB_Path_RoundCorner abschneiden bzw. abrunden.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
PeDre
Beiträge: 13
Registriert: 19.12.2014 11:22
Wohnort: Wien

Re: VectorDrawing und StrokePath Fehler

Beitrag von PeDre »

Danke, mit #PB_Path_DiagonalCorner sieht es wieder normal aus.

Peter
Antworten