Seite 12 von 12

Re: [Windows] 2DDrawing Befehle mit AntiAliasing durch GDI+

Verfasst: 09.08.2012 14:34
von STARGÅTE
Beispiel? Was ist x und y ?
Ich meine im Zusammenhang mit Drawing-Befehle, ist es für mich etwas seltsam von FPS zu sprechen,
da es meiner Meinung nach nicht für Echtzeit-Sachen gedacht ist.

Daher würde ich gerne mal ein Beispiel von dir sehen, was du dann "ununterbrochen" Zeichnest.
Zumal du bei Angabe zu FPS bitte immer den Debugger und die Synchronization ausschalten musst.

Re: [Windows] 2DDrawing Befehle mit AntiAliasing durch GDI+

Verfasst: 09.08.2012 15:19
von Codusa
Bei meiner Auflösung von 1920x1080 ist x= 598 und y= 200. Mit oder ohne Debugger ist egal, vsync ist an.
Wenn ich x auf 597 setze halbiert sich die fps, bei 596 ist wieder alles gut bei 595 wieder nicht.

Ich zeichne die RoundBox() als "Progressbar", ich wollte das eigentlich nicht immer auf ein Sprite zeichnen, lasse mich aber gerne umstimmen.

-EDIT-

Ich zeichne es auf ein Sprite und lass dieses dann anzeigen :D
Trotzdem herzlichen Dank!

Re: [Windows] 2DDrawing Befehle mit AntiAliasing durch GDI+

Verfasst: 28.09.2012 21:06
von STARGÅTE
Hallo Danilo,

irgendwie besteht immer noch das Problem, das gTextWidth() nicht den TextAntialiasMode berücksichtigt.
Du hattest dir das zwar schon mal angesehen, aber hier ist es zum Beispiel immer noch deutlich sichbar:
Bild

Code: Alles auswählen

Enumeration
   #Image
EndEnumeration

XIncludeFile "gDrawing.pbi"

gInit()

CreateImage(#Image, 900, 300, 32|#PB_Image_Transparent)

Define Text.s = "Das ist ein ganz langer Text, von dem die Breite ermittelt wird"
gStartDrawing(ImageOutput(#Image))
   gSetFont("Verdana", 24)
   gClear($FFFFFFFF)
   gSetTextAntialiasMode(#TextAntialiasMode_SystemDefault)
   gBox(0, 0, gTextWidth(Text), gTextHeight(Text), $FFC0C0C0)
   gDrawText(0, 0, Text, $FF000000)
   gSetTextAntialiasMode(#TextAntialiasMode_ClearTypeGridFit)
   gBox(0, 60, gTextWidth(Text), gTextHeight(Text), $FFC0C0C0)
   gDrawText(0, 60, Text, $FF000000)
   gSetTextAntialiasMode(#TextAntialiasMode_AntiAlias)
   gBox(0, 120, gTextWidth(Text), gTextHeight(Text), $FFC0C0C0)
   gDrawText(0, 120, Text, $FF000000)
gStopDrawing()

OpenWindow(#PB_Any, 0, 0, ImageWidth(#Image), ImageHeight(#Image), "Image", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
ImageGadget(#PB_Any, 0, 0, ImageWidth(#Image), ImageHeight(#Image), ImageID(#Image))

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow

gEnd()
Wäre echt nett, wenn du da noch mal gucken könntest.

Re: [Windows] 2DDrawing Befehle mit AntiAliasing durch GDI+

Verfasst: 30.09.2012 07:50
von Danilo
STARGÅTE hat geschrieben:Wäre echt nett, wenn du da noch mal gucken könntest.
Dauert paar Tage, habe aber noch eine Möglichkeit zur Hand. Wenn Diese auch nicht PixelPerfekt korrekt funktioniert,
dann bleibt nur noch den Text mit bisherigem gTextWidth() auf ein neues Bild zu zeichnen und dann von hinten
angefangen zu scannen, bis der erste sichtbare Pixel kommt. Die GDI+ Funktionen sind da leider nicht so genau, ist bekanntes Problem.

Re: [Windows] 2DDrawing Befehle mit AntiAliasing durch GDI+

Verfasst: 30.09.2012 17:35
von STARGÅTE
Ich dachte, dass ich einfach alles was in gDrawText steht in gTextWidth kopiere, aber so einfach gings leider auch nicht ...

Re: [Windows] 2DDrawing Befehle mit AntiAliasing durch GDI+

Verfasst: 30.09.2012 18:18
von Danilo
STARGÅTE hat geschrieben:Ich dachte, dass ich einfach alles was in gDrawText steht in gTextWidth kopiere, aber so einfach gings leider auch nicht ...
GdipMeasureString_() ist nicht ganz genau, und in der Hilfe dazu steht das man #TextAntialiasMode_AntiAlias setzen muss.
Mit #TextAntialiasMode_AntiAlias funktioniert es ja korrekt, nur mit den anderen AA modes nicht.
Ich hoffe mit GdipMeasureCharacterRanges_() geht es korrekter. Sonst bleibt nur der Weg mit dem Scannen der Pixel.

Re: [Windows] 2DDrawing Befehle mit AntiAliasing durch GDI+

Verfasst: 22.01.2014 01:58
von Delle
Gibt's in der Lib auch eine Funktion wie die native FillArea(), nur eben mit Antialiasing?

Re: [Windows] 2DDrawing Befehle mit AntiAliasing durch GDI+

Verfasst: 02.11.2020 22:35
von Delle
Benutzt das Teil hier eigentlich noch jemand?

In der Demo zeigen mir folgende "Kommandos" nichts an:

- gLine
- gBezier
- gTriangle
- gPoly