DrawText und Transparenz vertragen sich nicht!

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

DrawText und Transparenz vertragen sich nicht!

Beitrag von Lukaso »

Hallo,

habe erneut ein Problem, ich habe nen Kleinen Scroller gebastelt, der Funktioniert auch soweit, nur wenn ich Transparentz einschalte flackert alles .... das will ich aber nicht, und die Transparentz ist wichtig ...!

Code: Alles auswählen

Enumeration
  #Window
EndEnumeration
 
OpenWindow(#Window,0,0,40,40, #PB_Window_BorderLess | #PB_Window_ScreenCentered,"Lukaso's Example") 

Global tfont

tfont    =   LoadFont(10, "Verdana", 7, #PB_Font_Bold)

Procedure SetWinOpacity (hwnd.l, Opacity.l)
  SetWindowLong_(hwnd, #GWL_EXSTYLE, $00080000)
  SetLayeredWindowAttributes_(hwnd, 0, Opacity, 2)
EndProcedure

Procedure DrawInfo()
  tstring.s = "Lukaso's Example"
  tspeed = 30
  StartDrawing(WindowOutput())
  DrawingMode(1)
  DrawingFont(tfont) 
  FrontColor(0,0,0)
  Repeat
    For i=40 To 0-TextLength(tstring) Step -1
      Locate(i, 21)
      DrawText(tstring)
      Delay (tspeed)
      InvalidateRect_(WindowID(#Window),0,1) 
      UpdateWindow_(WindowID(#Window))
    Next
  Delay(tspeed)
    For i=0-TextLength(tstring) To 40
      Locate(i, 21)
      DrawText(tstring)
      Delay (tspeed)
      InvalidateRect_(WindowID(#Window),0,1) 
      UpdateWindow_(WindowID(#Window))
    Next
  Delay(tspeed)
  ForEver
  StopDrawing()  
EndProcedure

SetWinOpacity(WindowID(#Window), 100)

CreateThread(@DrawInfo(), 0)

Repeat


Until WaitWindowEvent()=#PB_Event_CloseWindow
Einfach mal Peobieren

Code: Alles auswählen

SetWinOpacity(WindowID(#Window), 100)
auszukomentieren!

Hat jemand ne lösung für mich :roll:

Danke :allright:
Nextgen Guild Wars Fanseite: Guild Wars Tactics (Pseudo-Admin + Developer)
"Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht." - Unbekannter Autor
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8820
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Versuch mal den Text in ein Image zu schreiben und das Image auf einem randlosen [c]ImageGadget()[/c] darzustellen. Sonst fällt mir dazu jetzt nichts ein.
Dristar
Beiträge: 72
Registriert: 13.09.2004 12:46

Beitrag von Dristar »

Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

Beitrag von Lukaso »

Hallo,
danke für die Tips, und den Code ....
Habe es versucht gleich umzusetzen, funtzt eigentlich auch ganz schön nur .... will ich das Bild (Hintergrund) auf das ich zeichne nachträglich ändern, wärend dem Programmablauf, nur bekomme ich dass nicht hin, er nimmt immer das "icon_play" auch wenn ich aufm Image Gadget auf "icon" verweise .... :cry: Habe es mit SetImageState versucht, manchmal sieht man ein ganz kurzes blinken, und er ladet schon wieder das "icon_play" obwohl ich nirgends darauf verweise ..... :cry:

Code: Alles auswählen

icon            =   CatchImage(0, ?icon)
icon_play       =   CatchImage(1, ?icon_play)

DataSection
icon:             IncludeBinary     "images/icon.bmp"
icon_play:        IncludeBinary     "images/icon_play.bmp"
EndDataSection

Global tickertext.s 

Procedure ticker(auf_gadget) 
  font_tmp = LoadFont(#PB_Any, "Verdana", 7, #PB_Font_Bold)
  Repeat 
    pix = 1 
    Repeat 
      image_tmp = CopyImage(auf_gadget, #PB_Any)
      StartDrawing(ImageOutput()) 
      Locate(ImageWidth() - pix, 22) 
      pix + 1 
      DrawingFont(UseFont(font_tmp)) 
      FrontColor(255, 255, 255) 
      If pix > ImageWidth() + TextLength(tickertext)
        StopDrawing() 
        Break 
      EndIf 
      DrawingMode(1) 
      tickertext = "LUKASO - TEST - TEST"
      DrawText(tickertext) 
      StopDrawing() 
      If image_old <> 0 
        FreeImage(image_old) 
      EndIf
      SetGadgetState(auf_gadget, UseImage(image_tmp)) 
      image_old = image_tmp 
      Delay(20) 
    ForEver 
  ForEver 
EndProcedure 

If OpenWindow(0, 0, 0, 32, 40, #PB_Window_BorderLess | #PB_Window_ScreenCentered, "ImageGadget TICKER") 
  If CreateGadgetList(WindowID(0)) 
    
    ImageGadget(1, 0, 0, ImageWidth(), ImageHeight(), icon)
    
    th = CreateThread(@ticker(), 1) 
     
    Repeat 
      
    Until WaitWindowEvent()=#PB_Event_CloseWindow

  EndIf
EndIf
Sonst funtzts Super THX :allright:
Nextgen Guild Wars Fanseite: Guild Wars Tactics (Pseudo-Admin + Developer)
"Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht." - Unbekannter Autor
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Wird Transparen?? so geschrieben :
...ich Transparentz einschalte...
:?:

Sieht doch irgendwie komisch aus :lol:

Edit: In meinem uralten Duden steht : Tras|pa|renz

KeyKon
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

Beitrag von Lukaso »

@KeyKon
jep istn Fehler, dass "t" gehöt nicht rein :|
Nextgen Guild Wars Fanseite: Guild Wars Tactics (Pseudo-Admin + Developer)
"Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht." - Unbekannter Autor
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

KeyKon hat geschrieben:Edit: In meinem uralten Duden steht : Tras|pa|renz
Steht das jetzt wirklich so da drinnen? Oder ist das jetzt ein Schreibfehler deinerseits?
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

Beitrag von Lukaso »

Kann mir keiner zum o.g. Prob. Helfen? :cry: :cry: :cry:
Nextgen Guild Wars Fanseite: Guild Wars Tactics (Pseudo-Admin + Developer)
"Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht." - Unbekannter Autor
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

@freedimension: UUUUUUps :oops: das steht da nich so drinnen ich hab natürlich ein n vergessen Trans|pa|renz.
@Lukaso: Sorry kann dir da nich helfen :oops: bin nur durch das Transparentz( :lol: ) aufmerksam geworden :roll: .
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

Beitrag von Lukaso »

HILFE :cry:
Nextgen Guild Wars Fanseite: Guild Wars Tactics (Pseudo-Admin + Developer)
"Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht." - Unbekannter Autor
Antworten