Dreieck mit Vectorgraphik

Für allgemeine Fragen zur Programmierung mit PureBasic.
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Dreieck mit Vectorgraphik

Beitrag 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
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Dreieck mit Vectorgraphik

Beitrag 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.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Dreieck mit Vectorgraphik

Beitrag 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
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
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Dreieck mit Vectorgraphik

Beitrag von Nino »

Herzlichen Dank STARGÅTE, das sieht besser aus (auf dem selben Monitor)!
Antworten