Bitte nochmal runterladen, geht nun. Bei irgendwelchen weiteren Auffälligkeiten bitte sagen, Danke.STARGÅTE hat geschrieben:Was mich jedoch noch wundert ist: abschließende Leerzeichen gehen nicht mit in die Breite ein.
gTextWidth("A") = gTextWidth("A ")
Klar, sie werden ja nicht angezeigt, aber trotzdem haben sie eine Länge und gerade wenn man (wie ich) einen Cursor anzeigen lassen will, brauche ich auch diese Leerzeichen.
Gibt es da vielleicht noch n Flag ?^^
[Windows] 2DDrawing Befehle mit AntiAliasing durch GDI+
Re: [Windows] 2DDrawing Befehle mit AntiAliasing durch GDI+
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Re: [Windows] 2DDrawing Befehle mit AntiAliasing durch GDI+
Echt super diese schnelle Umsetzung. Funktioniert.
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
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: [Windows] 2DDrawing Befehle mit AntiAliasing durch GDI+
So, an dieser stelle möchte ich mal etwas "zurückgeben".
Hier mal ein Beispiel für das Darstellen von Texten mit StyleSheets (ähnlich dem RTF-Format).
Mit Hilfe des gDrawing-Includes ist es nun einfacher die Schrift on-the-fly zu ändern.
Hier mal ein Beispiel:
Syntax : "\IA\i\-Quadrat\0 = \B50\b \C2cm\+2\c\0\n\Im\i\-e\0 = \C19,109\c×10\u\+31\0 \C2kg"
Funktionen wie StyledTextWidth() und StyledTextHeight() uvm. folgen später
Hier mal ein Beispiel für das Darstellen von Texten mit StyleSheets (ähnlich dem RTF-Format).
Mit Hilfe des gDrawing-Includes ist es nun einfacher die Schrift on-the-fly zu ändern.
Hier mal ein Beispiel:
Syntax : "\IA\i\-Quadrat\0 = \B50\b \C2cm\+2\c\0\n\Im\i\-e\0 = \C19,109\c×10\u\+31\0 \C2kg"
Code: Alles auswählen
EnableExplicit
XIncludeFile "gDrawing.pbi"
CompilerIf Defined(CharacterArray, #PB_Structure) = #False
Structure CharacterArray
c.c[0]
EndStructure
CompilerEndIf
Structure StyledTextFont
Name.s
Size.f
Style.i
Color.l
EndStructure
Structure StyledTextInclude
Name.s
Size.f
Style.i
Array Color.l(9)
EndStructure
Global StyledTextInclude.StyledTextInclude
Procedure SetStyledTextFont(Name.s, Size.f, Style.i=0, ColorList.s="$FF000000")
Protected Index.i, LastIndex.i
With StyledTextInclude
\Name = Name
\Size = Size
\Style = Style
For Index = 0 To 9
\Color(Index) = Val(StringField(ColorList, Index+1, ","))
Next
EndWith
EndProcedure
Procedure DrawStyledText(X.f, Y.f, Text.s)
Protected *Character.CharacterArray = @Text, String.s
Protected Font.StyledTextFont
Protected Start.i, Index.i = -1
Protected ShiftX.f, ShiftY.f, ShiftV.f
If Not *Character : ProcedureReturn #False : EndIf
Font\Name = StyledTextInclude\Name
Font\Size = StyledTextInclude\Size
Font\Style = StyledTextInclude\Style
Font\Color = StyledTextInclude\Color(0)
Repeat
With Font
gSetFont(\Name, \Size, \Style)
gSetPenColor(\Color)
Repeat
Index + 1
Select *Character\c[Index]
Case '\'
Select *Character\c[Index+1]
Case '\'
String = PeekS(@*Character\c[Start], Index-Start+1)
Default
String = PeekS(@*Character\c[Start], Index-Start)
EndSelect
gDrawText(X+ShiftX, Y+ShiftY+ShiftV, String)
ShiftX + gTextWidth(String)
Select *Character\c[Index+1]
Case 'C'
\Color = StyledTextInclude\Color(*Character\c[Index+2]-'0')
Index + 1
Case 'c'
\Color = StyledTextInclude\Color(0)
Case 'B'
\Style | #PB_Font_Bold
Case 'b'
\Style & ~#PB_Font_Bold
Case 'U'
\Style | #PB_Font_Underline
Case 'u'
\Style & ~#PB_Font_Underline
Case 'I'
\Style | #PB_Font_Italic
Case 'i'
\Style & ~#PB_Font_Italic
Case '+'
\Size = StyledTextInclude\Size * 0.7
ShiftV = -StyledTextInclude\Size * 0.1
Case '-'
\Size = StyledTextInclude\Size * 0.7
ShiftV = StyledTextInclude\Size * 0.4
Case '0'
\Size = StyledTextInclude\Size
ShiftV = 0
Case 'n'
ShiftY + gTextHeight("|")*1.1
ShiftX = 0
EndSelect
Index + 1
Start = Index+1
Break
Case #NUL
gDrawText(X+ShiftX, Y+ShiftY+ShiftV, PeekS(@*Character\c[Start], Index-Start))
Break 2
EndSelect
EndWith
ForEver
ForEver
EndProcedure
Enumeration
#Window
#Gadget
EndEnumeration
gInit()
OpenWindow(#Window, 0, 0, 250, 100, "StyledText", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
CanvasGadget(#Gadget, 0, 0, WindowWidth(#Window), WindowHeight(#Window))
gStartDrawing(CanvasOutput(#Gadget))
gSetTextAntialiasMode(#TextAntialiasMode_ClearTypeGridFit)
SetStyledTextFont("Arial", 24, #Null, "$FF000000,$FF008040,$FFC04000")
DrawStyledText(10, 10, "\IA\i\-Quadrat\0 = \B50\b \C2cm\+2\c\0\n\Im\i\-e\0 = \C19,109\c×10\u\+31\0 \C2kg")
gStopDrawing()
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
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
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
Re: [Windows] 2DDrawing Befehle mit AntiAliasing durch GDI+
Dafür wäre vielleicht ein neuer Thread mit Verweise auf diesen hier besser geeignet, oder?
Re: [Windows] 2DDrawing Befehle mit AntiAliasing durch GDI+
Hallo Danilo,
bitte entferne aus der Include die Konstante: #PB_Font_Default
Die existiert in PB 4.60 RC2 nicht mehr.
Desweiteren habe ich ein Problem wenn ich die Beispiele mit Windows 7 64Bit starten will.
Dort gibt mir gInit() immer 0 zurück. Weißt du woran das liegen könnte?
bitte entferne aus der Include die Konstante: #PB_Font_Default
Die existiert in PB 4.60 RC2 nicht mehr.
Desweiteren habe ich ein Problem wenn ich die Beispiele mit Windows 7 64Bit starten will.
Dort gibt mir gInit() immer 0 zurück. Weißt du woran das liegen könnte?
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
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: [Windows] 2DDrawing Befehle mit AntiAliasing durch GDI+
Habe auch Windows7 64bit und läuft mit PB 32bit. Oder meinst Du PureBasic 64bit?STARGÅTE hat geschrieben:Desweiteren habe ich ein Problem wenn ich die Beispiele mit Windows 7 64Bit starten will.
Dort gibt mir gInit() immer 0 zurück. Weißt du woran das liegen könnte?
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Re: [Windows] 2DDrawing Befehle mit AntiAliasing durch GDI+
Jo PB-64Bit, deswegen habe ich mir ja Windows 7 zugelegt ^^
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
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: [Windows] 2DDrawing Befehle mit AntiAliasing durch GDI+
Bitte ändere folgende Struktur, gleich am Anfang:
Also die 2 letzten Einträge von .l nach .i ändern, dann geht es.
Code: Alles auswählen
Structure GdiplusStartupInput
GdiPlusVersion.l
*DebugEventCallback.DebugEventProc
SuppressBackgroundThread.i
SuppressExternalCodecs.i
EndStructure
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Re: [Windows] 2DDrawing Befehle mit AntiAliasing durch GDI+
Oke, "gehen" tut es dann, jedoch meldet mit der Purifier dann eine "Overflow in the global data block".
Muss ich noch irgendwo eine Bufferlänge ändern?
Edit: Ich vermute GdiplusStartup_ ist das problem
Muss ich noch irgendwo eine Bufferlänge ändern?
Edit: Ich vermute GdiplusStartup_ ist das problem
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
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: [Windows] 2DDrawing Befehle mit AntiAliasing durch GDI+
STARGÅTE hat geschrieben:Oke, "gehen" tut es dann, jedoch meldet mit der Purifier dann eine "Overflow in the global data block".
Muss ich noch irgendwo eine Bufferlänge ändern?
Edit: Ich vermute GdiplusStartup_ ist das problem
Code: Alles auswählen
__gdiplusToken.i ; ändern (von .l nach .i)
Prototype GdiplusShutdown(token.i) ; ändern (von .l nach .i)
Hab noch nie mit 64bit probiert, wegen dem Bug mit PB 64bit damals.
Danke für die Meldungen!
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck