Seite 1 von 1

Dreieck mit Vectorgraphik

Verfasst: 23.02.2021 19:35
von Nino
Hi,

warum wird der untere Rand des Dreiecks gelb und die beiden anderen Ränder blau?
Was muss ich machen, damit die grün werden wie der Rest des Dreiecks?

Code: Alles auswählen

; PB 5.73 LTS

UsePNGImageEncoder()

Enumeration
   #Image
EndEnumeration

#ImageWidth  = 100
#ImageHeight = 100

If CreateImage(#Image, #ImageWidth, #ImageHeight, 32, #PB_Image_Transparent)
   If StartVectorDrawing(ImageVectorOutput(#Image))
      MovePathCursor(0, #ImageHeight)
      AddPathLine   (#ImageWidth, #ImageHeight)
      AddPathLine   (#ImageWidth/2, 0)
      ClosePath()
      
      VectorSourceColor(RGBA(0, 255, 0, 255))
      FillPath()
      
      StopVectorDrawing()
      If SaveImage(#Image, "C:\Users\Juergen\Desktop\Dreieck.png", #PB_ImagePlugin_PNG)
         MessageRequester("Dreieck", "OK")
      EndIf   
   EndIf
EndIf
Bild

Re: Dreieck mit Vectorgraphik

Verfasst: 23.02.2021 21:24
von mk-soft
Monitor kaputt !?

Habe mal auf macOS, Windows, Linux getestet. Alle Bilder Ok
Bild Forum geladen. Auch Ok

Sehe keine gelben oder blauen Ränder. Alles Grün.

Re: Dreieck mit Vectorgraphik

Verfasst: 23.02.2021 22:46
von STARGÅTE
In der Tat hat das ganze Dreieck ausschließlich einen grün Kanal.
Allerdings ist die Kantenglättung nicht ganz "zufriedenstellend", soll heißen,
deine Hintergrundfarbe ist zwar transparent aber trotzdem schwarz,
somit wird bei FillPath() grün mit schwarz geblendet und das Dreieck bekommt dunkel grüne/graue Ränder.

Ähnliche Probleme hat man auch mit Text der auf transparendem Hintergrund gezeichnet wird, weil nicht ausschließlich der Alpha Kanal geblendet wird, sondern auch (falscherweise?) die Farbe

EDIT: Hier mal ein Lösungsweg, um die Transparente Farbe auf grün zu setzen:

Code: Alles auswählen

UsePNGImageEncoder()

Enumeration
	#Image
EndEnumeration

#ImageWidth  = 100
#ImageHeight = 100

If CreateImage(#Image, #ImageWidth, #ImageHeight, 32)
	If StartDrawing(ImageOutput(#Image))
		DrawingMode(#PB_2DDrawing_AllChannels)
		Box(0, 0, OutputWidth(), OutputHeight(), RGBA(0, 255, 0, 0))
		StopDrawing()
	EndIf
	If StartVectorDrawing(ImageVectorOutput(#Image))
		MovePathCursor(0, #ImageHeight)
		AddPathLine   (#ImageWidth, #ImageHeight)
		AddPathLine   (#ImageWidth/2, 0)
		ClosePath()
		
		VectorSourceColor(RGBA(0, 255, 0, 255))
		FillPath()
		
		StopVectorDrawing()
		If SaveImage(#Image, "Dreieck.png", #PB_ImagePlugin_PNG, 32)
			MessageRequester("Dreieck", "OK")
		EndIf   
	EndIf
EndIf
Bild

Re: Dreieck mit Vectorgraphik

Verfasst: 24.02.2021 13:45
von Nino
Herzlichen Dank STARGÅTE, das sieht besser aus (auf dem selben Monitor)!