Text im Window

Anfängerfragen zum Programmieren mit PureBasic.
rudolfo
Beiträge: 19
Registriert: 19.10.2008 14:52

Text im Window

Beitrag 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?
Benutzeravatar
Franky
Beiträge: 1132
Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Kontaktdaten:

Beitrag 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.

:)
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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 
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
rudolfo
Beiträge: 19
Registriert: 19.10.2008 14:52

Beitrag 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]
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

SetWindowColor bewirkt schon was, aber das Fenster ist ja garnicht mehr zu sehen :mrgreen:
, vollkommen überlagert von einem schwarzem Image
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
rudolfo
Beiträge: 19
Registriert: 19.10.2008 14:52

Beitrag von rudolfo »

Also bei mir ist ein schwarzer text mit weissem text-hintergrund auf einem schwarzen window hintergrund. Wieso ist das bei dir anders?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
rudolfo
Beiträge: 19
Registriert: 19.10.2008 14:52

Beitrag 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?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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?
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten