Seite 1 von 1

DrawText und Transparenz vertragen sich nicht!

Verfasst: 03.11.2004 18:40
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:

Verfasst: 03.11.2004 18:46
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.

Verfasst: 03.11.2004 18:49
von Dristar

Verfasst: 03.11.2004 23:10
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:

Verfasst: 04.11.2004 15:14
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

Verfasst: 04.11.2004 15:21
von Lukaso
@KeyKon
jep istn Fehler, dass "t" gehöt nicht rein :|

Verfasst: 04.11.2004 15:28
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?

Verfasst: 04.11.2004 17:18
von Lukaso
Kann mir keiner zum o.g. Prob. Helfen? :cry: :cry: :cry:

Verfasst: 04.11.2004 18:24
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: .

Verfasst: 07.11.2004 14:31
von Lukaso
HILFE :cry: