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 :mrgreen:

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 :mrgreen:
, 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 :mrgreen:

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 :wink:

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?