Stellt einfach in dem Quellcode mal den canvas::#scalingFactor auf 2, 4 oder 8 und die Schrift sieht bedeutend besser aus.
PB 5.73
Code: Alles auswählen
; Test ob ein verkleinertes Image besser lesbare Schrift beinhalten kann
; 25.05.2025 // 05:00 CMT+2
declareModule app
;{
;{
#cv_text$ = "Skalierung (Schrift auf Image, Image auf Canvas)"
;}
;{
declare execute ( )
;}
;}
endDeclareModule
declareModule canvas
;{
;{
#scalingFactor = 1.0
;}
;{
declare get ( )
declare init ( *window )
declare paint ( )
;}
;}
endDeclareModule
declareModule window
;{
declare finish ( )
declare init ( )
declare inputCB ( )
;}
endDeclareModule
module app
;{
procedure execute ( )
;{
if ( window::init ( ) )
;{
repeat
until ( window::inputCB ( ) )
window::finish ( )
procedureReturn
;}
endIf
procedureReturn ( #true )
;}
endProcedure
;}
endModule
module canvas
;{
;{
define *canvas
;}
;{
procedure get ( )
;{
;{
shared *canvas
;}
;{
procedureReturn ( *canvas )
;}
;}
endProcedure
procedure init ( *window )
;{
;{
shared *canvas
;}
;{
if ( ( *window ) and ( isWindow ( *window ) ) )
;{
if ( useGadgetList ( windowId ( *window ) ) )
;{
*canvas = canvasGadget ( #pb_any,
0,
0,
0,
0 )
procedureReturn ( *canvas )
;}
endIf
;}
endIf
;}
procedureReturn
;}
endProcedure
procedure paint ( )
;{
;{
protected *image
static *font
;}
;{
shared *canvas
;}
;{
if ( ( not ( *font ) or ( not ( isFont ( *font ) ) ) ) )
;{
*font = loadFont ( #pb_any,
"Arial",
#scalingFactor * 12.0 )
;}
endIf
*image = createImage ( #pb_any,
#scalingFactor * gadgetWidth ( *canvas ),
#scalingFactor * gadgetHeight ( *canvas ) )
if ( ( ( *image ) and
( isImage ( *image ) ) and
( startDrawing ( imageOutput ( *image ) ) ) ) )
;{
if ( ( ( *font ) and ( isFont ( *font ) ) ) )
;{
drawingFont ( fontId ( *font ) )
box ( 0,
0,
imageWidth ( *image ),
imageHeight ( *image ),
#white )
drawText ( 25,
25,
app::#cv_text$,
#black,
#white )
;}
endIf
stopDrawing ( )
;}
endIf
resizeImage ( *image,
gadgetWidth ( *canvas ),
gadgetHeight ( *canvas ) )
if ( startDrawing ( canvasOutput ( *canvas ) ) )
;{
drawImage ( imageId ( *image ),
0,
0 )
stopDrawing ( )
freeImage ( *image )
procedureReturn ( #true )
;}
endIf
;}
procedureReturn
;}
endProcedure
;}
;}
endModule
module window
;{
;{
define *window
;}
;{
declare sizing ( )
;}
;{
procedure finish ( )
;{
;{
shared *window
;}
;{
unbindEvent ( #pb_event_sizeWindow,
@ sizing ( ) )
closeWindow ( *window )
procedureReturn ( #true )
;}
procedureReturn
;}
endProcedure
procedure init ( )
;{
;{
shared *window
;}
;{
*window = openWindow ( #pb_any,
#pb_ignore,
#pb_ignore,
640,
400,
#empty$,
#pb_window_invisible |
#pb_window_systemMenu |
#pb_window_sizeGadget )
bindEvent ( #pb_event_sizeWindow,
@ sizing ( ) )
if ( canvas::init ( *window ) )
;{
sizing ( )
hideWindow ( *window,
#false )
procedureReturn ( #true )
;}
endIf
procedureReturn
;}
;}
endProcedure
procedure inputCB ( )
;{
procedureReturn ( bool ( waitWindowEvent ( ) = #pb_event_closeWindow ) )
;}
endProcedure
procedure sizing ( )
;{
;{
shared *window
;}
;{
resizeGadget ( canvas::get ( ),
0,
0,
windowWidth ( *window ),
windowHeight ( *window ) )
canvas::paint ( )
;}
;}
endProcedure
;}
;}
endModule
app::execute ( )
; es_91
; Please excuse my style
(Kurz was das Programm macht: Schreibe auf ein Image, passe dieses in einen Canvas ein und update das ganze bei jeder Fenstergrößenänderung.)
Kann man denn vielleicht behaupten, dass DrawText() für individuelle GUI-Designs kaum geeignet ist?
