Seite 1 von 2
Text im Window
Verfasst: 19.10.2008 15:00
von rudolfo
Code: Alles auswählen
OpenWindow(1, 10, 10, 400, 100, "")
; SetWindowColor(1, RGB(255, 255, 255))
CreateImage(1, 400, 100)
FontID.l = LoadFont(7, "Arial", 14)
StartDrawing(ImageOutput(1))
DrawingMode(#PB_2DDrawing_Default)
BackColor( RGB(255, 255, 255))
DrawingFont(FontID)
DrawText(30, 30, "aaaaaaaaaaaaaaaaaaaaaaaaaaa")
StopDrawing()
StartDrawing(WindowOutput(1))
DrawingMode(#PB_2DDrawing_Default)
BackColor( RGB(255, 255, 255))
DrawingFont(FontID)
DrawImage(ImageID(1), 0, 0)
StopDrawing()
Repeat
Until WaitWindowEvent(1) = #PB_Event_CloseWindow
dieses prog zeigt einen text schwarz auf weiss in einem window mit schwarzem hintergrund. Ich will aber einen weissen Hintergrund und den text schwarz auf weiss. wenn ich aber den window hintergrund auf weiss setze (kommentar bei SetWindowColor wegnehmen) dann kommt kein text. Habe schon verschiedene kombinationen durchgespielt, der text ist nur in der ersten variante zu sehen. Wie macht man das?
Verfasst: 19.10.2008 15:05
von Franky
Du solltest das direkte Zeichnen auf Fenster vermeiden, da es sehr "unschön" ist. Wenn du das Fenster z.B. dann unter die Taskleiste ziehst, ist die Farbe weg, oder es muss extra neu gemalt werden.
Du solltest für solche zwecke ImageGadgets benutzen, bzw. für dieses Beispiel kannst du auch mit TextGadget und Setgadgetcolor arbeiten.

Verfasst: 19.10.2008 15:19
von ts-soft
Er will aber malen
Code: Alles auswählen
OpenWindow(1, 10, 10, 400, 100, "")
; SetWindowColor(1, RGB(255, 255, 255))
CreateImage(1, 400, 100)
FontID.l = LoadFont(7, "Arial", 14)
StartDrawing(ImageOutput(1))
DrawingMode(#PB_2DDrawing_Default)
FrontColor(RGB(0, 0, 0))
BackColor( RGB(255, 255, 255))
Box(0, 0, 400, 100, RGB(255, 255, 255))
DrawingFont(FontID)
DrawText(30, 30, "aaaaaaaaaaaaaaaaaaaaaaaaaaa")
StopDrawing()
StartDrawing(WindowOutput(1))
DrawingMode(#PB_2DDrawing_Default)
BackColor( RGB(255, 255, 255))
DrawingFont(FontID)
DrawImage(ImageID(1), 0, 0)
StopDrawing()
Repeat
Until WaitWindowEvent(1) = #PB_Event_CloseWindow
Verfasst: 19.10.2008 15:20
von rudolfo
Code: Alles auswählen
OpenWindow(1, 10, 10, 400, 100, "")
SetWindowColor(1, RGB(255, 255, 255))
CreateImage(1, 400, 100)
FontID.l = LoadFont(7, "Arial", 14)
StartDrawing(ImageOutput(1))
DrawingMode(#PB_2DDrawing_Default)
BackColor( RGB(255, 255, 255))
DrawingFont(FontID)
DrawText(30, 30, "aaaaaaaaaaaaaaaaaaaaaaaaaaa")
StopDrawing()
If CreateGadgetList(WindowID(1))
ImageGadget(1, 0, 0, 400, 100, ImageID(1))
EndIf
SetGadgetState(1, ImageID(1))
SetGadgetColor(1, #PB_Gadget_BackColor, RGB(255, 255, 255))
Repeat
Until WaitWindowEvent(1) = #PB_Event_CloseWindow
Also wenn ich das richtig gemacht hab, dann bewirk SetWindowColor gar nichts mehr. Was kann man machen, damit man beliebigen Hintergrund mit beliebigem Fordergrund herstellen kann?[/code]
Verfasst: 19.10.2008 15:22
von ts-soft
SetWindowColor bewirkt schon was, aber das Fenster ist ja garnicht mehr zu sehen

, vollkommen überlagert von einem schwarzem Image
Verfasst: 19.10.2008 15:34
von rudolfo
Also bei mir ist ein schwarzer text mit weissem text-hintergrund auf einem schwarzen window hintergrund. Wieso ist das bei dir anders?
Verfasst: 19.10.2008 15:42
von ts-soft
Das Image ist an den stellen, wo Du bisher nichts gemalt hat, schwarz.
Deshalb hab ich in meinem obigem Beispiel eine weiße Box gezeichnet.
Der Fensterhintergrund ist überhaupt nicht sichtbar, kann also nichts
bewirken.
Verfasst: 19.10.2008 15:46
von rudolfo
ts-soft hat geschrieben:Er will aber malen
Code: Alles auswählen
OpenWindow(1, 10, 10, 400, 100, "")
; SetWindowColor(1, RGB(255, 255, 255))
CreateImage(1, 400, 100)
FontID.l = LoadFont(7, "Arial", 14)
StartDrawing(ImageOutput(1))
DrawingMode(#PB_2DDrawing_Default)
FrontColor(RGB(0, 0, 0))
BackColor( RGB(255, 255, 255))
Box(0, 0, 400, 100, RGB(255, 255, 255))
DrawingFont(FontID)
DrawText(30, 30, "aaaaaaaaaaaaaaaaaaaaaaaaaaa")
StopDrawing()
StartDrawing(WindowOutput(1))
DrawingMode(#PB_2DDrawing_Default)
BackColor( RGB(255, 255, 255))
DrawingFont(FontID)
DrawImage(ImageID(1), 0, 0)
StopDrawing()
Repeat
Until WaitWindowEvent(1) = #PB_Event_CloseWindow
sorry, den code hatte ich übersehen. Muss mir mal genau anschaun was da gemacht wird.
Auf ne weisse Box den text ausgeben - ziemlich clever. Aber den window hintergrund einstellen kann man dann wohl vergessen?
Verfasst: 19.10.2008 15:50
von ts-soft
> Aber den window hintergrund einstellen kann man dann wohl vergessen?
Der ist doch garnicht sichtbar, ist doch Dein Image drüber

Verfasst: 19.10.2008 16:16
von ts-soft
Ich denke mal, da Du eher sowas:
Code: Alles auswählen
OpenWindow(1, 10, 10, 400, 100, "")
FontID.l = LoadFont(7, "Arial", 14)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #WM_PAINT
StartDrawing(WindowOutput(1))
DrawingMode(#PB_2DDrawing_Default)
BackColor( RGB(255, 255, 255))
DrawingFont(FontID)
DrawText(30, 30, "aaaaaaaaaaaaaaaaaaaaaaaaaaa")
StopDrawing()
EndSelect
ForEver
machen möchtest?