Drucken einer Textzeile mit und ohne Fettdruck
Drucken einer Textzeile mit und ohne Fettdruck
Hallo,
habe folgendes Problem: die untenstehende Zeile möchte ich so ausdrucken:
Dieser Satzteil ist normal, dieser Satzteil ist fettgedruck, das ist nun wieder normal.
Optimal wäre es, den mittleren Satzteil in einer größeren Schriftart darzustellen.
Drawtext hat ja den x und y - Parameter. Man müßte höchstwahrscheinlich die Zeichenbreite ermitteln und addieren.
Aber da blieb ich schon stecken.
Hat jemand eine Idee, wie man den Satz formatiert ausdrucken kann?
habe folgendes Problem: die untenstehende Zeile möchte ich so ausdrucken:
Dieser Satzteil ist normal, dieser Satzteil ist fettgedruck, das ist nun wieder normal.
Optimal wäre es, den mittleren Satzteil in einer größeren Schriftart darzustellen.
Drawtext hat ja den x und y - Parameter. Man müßte höchstwahrscheinlich die Zeichenbreite ermitteln und addieren.
Aber da blieb ich schon stecken.
Hat jemand eine Idee, wie man den Satz formatiert ausdrucken kann?
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Re: Drucken einer Textzeile mit und ohne Fettdruck
Code: Alles auswählen
Enumeration
#Window
#Gadget
#Font_Normal
#Font_Bold
EndEnumeration
OpenWindow(#Window, 0, 0, 800, 600, "WindowTitle", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
CanvasGadget(#Gadget, 0, 0, WindowWidth(#Window), WindowHeight(#Window))
LoadFont(#Font_Normal, "Arial", 12)
LoadFont(#Font_Bold, "Arial", 12, #PB_Font_Bold)
Define X.i = 10, Y.i = 10
If StartDrawing(CanvasOutput(#Gadget))
DrawingMode(#PB_2DDrawing_Transparent)
FrontColor($000000)
DrawingFont(FontID(#Font_Normal))
DrawText(X, Y, "Dieser Satzteil ist normal, ")
X + TextWidth("Dieser Satzteil ist normal, ")
DrawingFont(FontID(#Font_Bold))
DrawText(X, Y, "dieser Satzteil ist fettgedruck")
X + TextWidth("dieser Satzteil ist fettgedruck")
DrawingFont(FontID(#Font_Normal))
DrawText(X, Y, ", das ist nun wieder normal.")
StopDrawing()
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
"Dieser Satzteil ist normal, #dieser Satzteil ist fettgedruck#, das ist nun wieder normal."
Hier kannst du dann an den # teilen und entsprechend die Font wählen.
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: Drucken einer Textzeile mit und ohne Fettdruck
Hallo STARGÅTE,
Toll. Leider wird das Fettgedruckte bei Schriftgrad 48 nicht auf einer Zeile gedruckt.
Meine, die untere Hälfte der Schrift endet eine halbe Zeile tiefer sie überschreitet die Schriftgrundlinie nach unten.
Nun möchte ich aber auf der Grundlinie einer Zeile drucken.
Toll. Leider wird das Fettgedruckte bei Schriftgrad 48 nicht auf einer Zeile gedruckt.
Meine, die untere Hälfte der Schrift endet eine halbe Zeile tiefer sie überschreitet die Schriftgrundlinie nach unten.
Nun möchte ich aber auf der Grundlinie einer Zeile drucken.
Code: Alles auswählen
Enumeration
#Window
#Gadget
#Font_Normal
#Font_Bold
EndEnumeration
OpenWindow(#Window, 0, 0, 800, 600, "WindowTitle", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
CanvasGadget(#Gadget, 0, 0, WindowWidth(#Window), WindowHeight(#Window))
LoadFont(#Font_Normal, "Arial", 12)
LoadFont(#Font_Bold, "Arial", 48, #PB_Font_Bold)
Define X.i = 10, Y.i = 10
If StartDrawing(CanvasOutput(#Gadget))
; PrintRequester()
; StartPrinting("test")
; If StartDrawing(PrinterOutput())
DrawingMode(#PB_2DDrawing_Transparent)
FrontColor($000000)
DrawingFont(FontID(#Font_Normal))
DrawText(X, Y, "Dieser Satzteil ist normal, ")
X + TextWidth("Dieser Satzteil ist normal, ")
DrawingFont(FontID(#Font_Bold))
DrawText(X, Y, "dieser Satzteil ist fettgedruck")
X + TextWidth("dieser Satzteil ist fettgedruck")
DrawingFont(FontID(#Font_Normal))
DrawText(X, Y, ", das ist nun wieder normal.")
StopDrawing()
; StopPrinting()
EndIf
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Re: Drucken einer Textzeile mit und ohne Fettdruck
Ok, dann musst du die Y-Position ebenfalls anpassen.
Hier ist es schwer die Lage der Grundlinie zu finden, bei dieser Schrift etwa bei 80% von TextHeight:
Hier ist es schwer die Lage der Grundlinie zu finden, bei dieser Schrift etwa bei 80% von TextHeight:
Code: Alles auswählen
Enumeration
#Window
#Gadget
#Font_Normal
#Font_Bold
EndEnumeration
OpenWindow(#Window, 0, 0, 800, 600, "WindowTitle", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
CanvasGadget(#Gadget, 0, 0, WindowWidth(#Window), WindowHeight(#Window))
LoadFont(#Font_Normal, "Arial", 12)
LoadFont(#Font_Bold, "Arial", 48, #PB_Font_Bold)
Define X.i = 10, Y.i = 70
If StartDrawing(CanvasOutput(#Gadget))
; PrintRequester()
; StartPrinting("test")
; If StartDrawing(PrinterOutput())
DrawingMode(#PB_2DDrawing_Transparent)
FrontColor($000000)
DrawingFont(FontID(#Font_Normal))
DrawText(X, Y-TextHeight(" ")*0.8, "Dieser Satzteil ist normal, ")
X + TextWidth("Dieser Satzteil ist normal, ")
DrawingFont(FontID(#Font_Bold))
DrawText(X, Y-TextHeight(" ")*0.8, "dieser Satzteil ist fettgedruck")
X + TextWidth("dieser Satzteil ist fettgedruck")
DrawingFont(FontID(#Font_Normal))
DrawText(X, Y-TextHeight(" ")*0.8, ", das ist nun wieder normal.")
StopDrawing()
; StopPrinting()
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
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: Drucken einer Textzeile mit und ohne Fettdruck
Hallo
man könnte auch die Rückgabe von DrawText nutzen,
und sich so die nächste Zeile sparen
Walter
man könnte auch die Rückgabe von DrawText nutzen,
Code: Alles auswählen
X + DrawText(X, Y-TextHeight(" ")*0.8, "Dieser Satzteil ist normal, ")
Code: Alles auswählen
X + TextWidth("dieser Satzteil ist fettgedruck")
Lesen bei schlechten Lichtverhältnissen ist nicht schlecht für die Augen, sondern trainiert sie sogar.
Linux Ubuntu Mate 18.04
PB 5.71
Intel i5
Linux Ubuntu Mate 18.04
PB 5.71
Intel i5
Re: Drucken einer Textzeile mit und ohne Fettdruck
Hallo ihr Beiden,
wo kommen die 0.8 her. Ist das ein fester Wert oder geschätzt?
wo kommen die 0.8 her. Ist das ein fester Wert oder geschätzt?
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Re: Drucken einer Textzeile mit und ohne Fettdruck
Hallo dysti
Die kommen von STARGÅTE
Walter
Die kommen von STARGÅTE
Code: Alles auswählen
Enumeration
#Window
#Gadget
#Font_Normal
#Font_Bold
EndEnumeration
OpenWindow(#Window, 0, 0, 800, 600, "WindowTitle", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
CanvasGadget(#Gadget, 0, 0, WindowWidth(#Window), WindowHeight(#Window))
LoadFont(#Font_Normal, "Arial", 12)
LoadFont(#Font_Bold, "Arial", 48, #PB_Font_Bold)
Define X.i = 10, Y.i = 70
If StartDrawing(CanvasOutput(#Gadget))
; PrintRequester()
; StartPrinting("test")
; If StartDrawing(PrinterOutput())
DrawingMode(#PB_2DDrawing_Transparent)
FrontColor($000000)
DrawingFont(FontID(#Font_Normal))
DrawText(X, Y-TextHeight(" ")*0.8, "Dieser Satzteil ist normal, ")
X + TextWidth("Dieser Satzteil ist normal, ")
DrawingFont(FontID(#Font_Bold))
DrawText(X, Y-TextHeight(" ")*0.8, "dieser Satzteil ist fettgedruck")
X + TextWidth("dieser Satzteil ist fettgedruck")
DrawingFont(FontID(#Font_Normal))
DrawText(X, Y-TextHeight(" ")*0.8, ", das ist nun wieder normal.")
StopDrawing()
; StopPrinting()
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Lesen bei schlechten Lichtverhältnissen ist nicht schlecht für die Augen, sondern trainiert sie sogar.
Linux Ubuntu Mate 18.04
PB 5.71
Intel i5
Linux Ubuntu Mate 18.04
PB 5.71
Intel i5
Re: Drucken einer Textzeile mit und ohne Fettdruck
Um mich mal selbst zu zitieren:
TextHeight() gibt in PureBasic den Abstand von k- zur p-Linie zurück (Liniensystem (Typografie)), und das auch nur in etwa. Damit man also die Lage der Grundlinie bekommt, muss man nur das Verhältnis k-Line zu Grundlinie nutzen, was bei dieser Schrift etwa bei 0.8 (80%) liegt, andere Schriften, können diese bei 70% oder 90% haben. Würde man immer die komplette TextHeight abziehen, würde alles auf der p-Line ausgerichtet sein, also an der unterkante von Buchstaben wie j, p, q, ySTARGÅTE hat geschrieben:[...]die Lage der Grundlinie zu finden, bei dieser Schrift etwa bei 80% von TextHeight
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: Drucken einer Textzeile mit und ohne Fettdruck
...... muß ich also bei Verwendung einer anderen Schriftart das Verhältnis durch probieren selbst herausfinden.
Nun ja, wenn ich den Text ausdrucke, ist er ziemlich klein.
Es gibt also Unterschiede, ob ich den Text am Bildschirm anzeige oder ausdrucke.
Nun habe ich das Listing abgeändert. Nun druckt er zwar fett und richtig auf den Drucker (Schriftgröße normal),
aber keine größere Schriftart. Warum?
Nun ja, wenn ich den Text ausdrucke, ist er ziemlich klein.
Es gibt also Unterschiede, ob ich den Text am Bildschirm anzeige oder ausdrucke.
Nun habe ich das Listing abgeändert. Nun druckt er zwar fett und richtig auf den Drucker (Schriftgröße normal),
aber keine größere Schriftart. Warum?
Code: Alles auswählen
Enumeration
#Window
#Gadget
#Font_Normal
#Font_Bold
EndEnumeration
ypos = PrinterPageWidth() ; 7016
xpos = PrinterPageHeight() ; 4958
;OpenWindow(#Window, 0, 0, 800, 600, "WindowTitle", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
;CanvasGadget(#Gadget, 0, 0, WindowWidth(#Window), WindowHeight(#Window))
LoadFont(#Font_Normal, "Arial",((xpos / 1024) * 12))
LoadFont(#Font_Bold, "Arial",((xpos / 1024) * 24), #PB_Font_Bold)
Define X.i = 10, Y.i = 70
; If StartDrawing(CanvasOutput(#Gadget))
PrintRequester()
StartPrinting("test")
If StartDrawing(PrinterOutput())
DrawingMode(#PB_2DDrawing_Transparent)
FrontColor($000000)
DrawingFont(FontID(#Font_Normal))
DrawText(X, Y-TextHeight(" ")*0.8, "Dieser Satzteil ist normal, ")
X + TextWidth("Dieser Satzteil ist normal, ")
DrawingFont(FontID(#Font_Bold))
DrawText(X, Y-TextHeight(" ")*0.8, "dieser Satzteil ist fettgedruck")
X + TextWidth("dieser Satzteil ist fettgedruck")
DrawingFont(FontID(#Font_Normal))
DrawText(X, Y-TextHeight(" ")*0.8, ", das ist nun wieder normal.")
DrawingFont(FontID(#Font_Bold))
DrawText(10, Y+100-TextHeight(" ")*0.8, "Diese Zeile sollte fettgedruckt und eine größere Schriftart haben.")
StopDrawing()
StopPrinting()
EndIf
;Repeat
; Select WaitWindowEvent()
; Case #PB_Event_CloseWindow
; End
; EndSelect
;ForEver
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Re: Drucken einer Textzeile mit und ohne Fettdruck
wenn Du eine größere Schriftart haben möchtest, musst Du siedysti hat geschrieben:Nun druckt er zwar fett und richtig auf den Drucker (Schriftgröße normal),
aber keine größere Schriftart. Warum?
IMHO auch angeben:
Code: Alles auswählen
LoadFont(#Font_Bold2, "Arial", 128, #PB_Font_Bold) ; ziemlich grosssss...
[...]
DrawingFont(FontID(#Font_Bold2))
DrawText(10, Y+100-TextHeight(" ")*0.8, "Diese Zeile sollte fettgedruckt und eine größere Schriftart haben.")
a²+b²=mc²