Seite 1 von 1

[Module] DrawEx - 2DDrawing mit Antialiasing (all OS)

Verfasst: 16.06.2019 20:12
von Thorsten1867
DrawEx - Module (all OS / 64Bit / DPI)

Befehle für 2DDrawing mit Antialiasing Effekt

Bild

Code: Alles auswählen

; Draw::AlphaColor()    - similar to RGBA()
; Draw::aBox()          - similar to Box()
; Draw::aCircle()       - similar to Circle()
; Draw::aCircleArc()    - draws a arc of a circle
; Draw::aCircleSector() - draws a circle sector
; Draw::aLine()         - similar to Line()
; Draw::aLineXY()       - similar to LineXY()
; Draw::MixColor()      - mixes 2 colours in a mixing ratio of 1% - 99%
Download: DrawExModule.pbi

Re: [Module] DrawEx - 2DDrawing mit Antialiasing (all OS)

Verfasst: 16.06.2019 20:16
von RSBasic
Vielen Dank nochmal für die vielen Module. :allright:

Re: [Module] DrawEx - 2DDrawing mit Antialiasing (all OS)

Verfasst: 16.06.2019 20:18
von Thorsten1867

Re: [Module] DrawEx - 2DDrawing mit Antialiasing (all OS)

Verfasst: 16.06.2019 20:42
von STARGÅTE
Hast du die neue VectorDrawing-Lib von PB nicht gesehen?

Hier dein Beispiel mit PB-Befehlen:

Code: Alles auswählen

#Window = 0
#Gadget = 1

If OpenWindow(#Window, 0, 0, 200, 200, "2DDrawing Beispiel", #PB_Window_SystemMenu|#PB_Window_Tool|#PB_Window_ScreenCentered)
	
	CanvasGadget(#Gadget, 10, 10, 180, 180)
	
	If StartVectorDrawing(CanvasVectorOutput(#Gadget))
		
		; Draw::aLineXY(90, 90, 90 + 80 * Cos(Radian(230)), 90 + 80 * Sin(Radian(230)), $228B22, Draw::#DPI)
		MovePathCursor(90, 90)
		AddPathLine(90 + 80 * Cos(Radian(230)), 90 + 80 * Sin(Radian(230)))
		VectorSourceColor($FF228B22)
		StrokePath(1)
		; Draw::aCircleSector(90, 90, 70, 40, 90, $800000, $00D7FF, Draw::#DPI)
		MovePathCursor(90, 90)
		AddPathCircle(90, 90, 70, 40, 90, #PB_Path_Connected)
		ClosePath()
		VectorSourceColor($FF00D7FF)
		FillPath(#PB_Path_Preserve)
		VectorSourceColor($FF800000)
		StrokePath(1)
		; Draw::aCircle(90, 90, 80, $800000, Draw::#DPI)
		AddPathCircle(90, 90, 80)
		VectorSourceColor($FF800000)
		StrokePath(1)
		; Draw::aCircleArc(90, 90, 70, 250, 340, $008CFF, Draw::#DPI)
		AddPathCircle(90, 90, 70, 250, 340)
		VectorSourceColor($FF008CFF)
		StrokePath(1)
		; Draw::aLine(10, 90, 160, 1, $8515C7, Draw::#DPI)
		MovePathCursor(10, 90)
		AddPathLine(160, 0, #PB_Path_Relative)
		VectorSourceColor($FF8515C7)
		StrokePath(1)
		; Draw::aBox(5, 5, 170, 170, $CD0000, Draw::#DPI)
		AddPathBox(5, 5, 170, 170)
		VectorSourceColor($FFCD0000)
		StrokePath(1)
		
		StopVectorDrawing() 
	EndIf
	
	Repeat
		Event = WaitWindowEvent()
	Until Event = #PB_Event_CloseWindow
	
EndIf

Re: [Module] DrawEx - 2DDrawing mit Antialiasing (all OS)

Verfasst: 16.06.2019 22:43
von Thorsten1867
Doch die habe ich gesehen, doch die hat RGBA() - Farben vorausgesetzt, die ich zu diesem Zeitpunkt nicht verwenden konnte.

So habe ich eine Lösung gesucht, bei der ich die Farben mit der Hintergrundfarbe gemischt und so ein Pseudeo-Antialiasing erzeugt.
Als mir dann die Idee kam, wie ich das RGBA() Problem umgehen kann, war es schon zu spät und ich hatte schon die ganzen Routinen, die lediglich auf Transparenz umgestellt werden mussten. :roll:

Nachdem das ganze eine äußerst interessante Herausforderung war, habe ich das Modul trotzdem veröffentlicht für Leute, die 2D-Drawing verwenden.