
Flackerndes Text-Gadget
Re: Flackerndes Text-Gadget
Klasse - kein Flackern mehr!
Vielen Dank!

PB + B4X = greatest tools on earth
Win 10 | PB 5.72
Win 10 | PB 5.72
- silbersurfer
- Beiträge: 175
- Registriert: 06.07.2014 12:21
Re: Flackerndes Text-Gadget
Freut mich das es klappt... 

Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
- hjbremer
- Beiträge: 822
- Registriert: 27.02.2006 22:30
- Computerausstattung: von gestern
- Wohnort: Neumünster
Re: Flackerndes Text-Gadget
Das Flackern kommt durch das neuzeichnen zustande und war schon immer so. Bei einigen Rechnern sieht man es auf anderen nicht. Hängt wohl mit der Graka zusammen.
2 weitere Lösungen
mit Api
oder mit CanvasGadget
2 weitere Lösungen
mit Api
Code: Alles auswählen
Declare TimerCallBack(hWnd,Msg,wParam,lParam)
Font12b.l = LoadFont(#PB_Any, "Arial", 12, #PB_Font_Bold)
#window = 0
#text = 0
OpenWindow(#window, 0, 0, 200, 100, "es flackert", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
TextGadget(#text, 30, 40, 140, 30, "", #SS_CENTERIMAGE|#SS_CENTER|#SS_SUNKEN) ;<-- der Rahmen muß sein
SetGadgetFont(#text, FontID(Font12b))
SetTimer_(WindowID(#window), 77, 500, @TimerCallBack()) ;Wiederholzeit=500 ms; Identifier=77
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Procedure TimerCallBack(hWnd,Msg,wParam,lParam)
Static i
i = i + 1
Select Msg
Case #WM_TIMER
If wparam = 77
SendMessage_(GadgetID(#text), #WM_SETREDRAW, #False, 0)
SetGadgetText(#text, Str(i) + ". Durchlauf")
SendMessage_(GadgetID(#text), #WM_SETREDRAW, #True, 0)
InvalidateRect_(GadgetID(#text), 0, #False)
EndIf
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
Code: Alles auswählen
Declare TimerCallBack(hWnd,Msg,wParam,lParam)
Global Font12b = LoadFont(#PB_Any, "Arial", 12, #PB_Font_Bold)
#window = 0
#text = 0
OpenWindow(#window, 0, 0, 200, 100, "es flackert", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CanvasGadget(#text, 30, 40, 140, 30, #PB_Canvas_Border)
SetTimer_(WindowID(#window), 77, 500, @TimerCallBack()) ;Wiederholzeit=500 ms; Identifier=77
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Procedure TimerCallBack(hWnd,Msg,wParam,lParam)
Static i
i = i + 1
Select Msg
Case #WM_TIMER
If wparam = 77
If StartDrawing(CanvasOutput(#text))
Box(0,0,140,30, #Yellow) ; and a green box
DrawingFont(FontID(Font12b))
DrawingMode(#PB_2DDrawing_Transparent)
FrontColor(#Black)
DrawText(10,5,Str(i) + ". Durchlauf")
StopDrawing()
EndIf
EndIf
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
Purebasic 5.70 x86 5.72 X 64 - Windows 10
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
- silbersurfer
- Beiträge: 175
- Registriert: 06.07.2014 12:21
Re: Flackerndes Text-Gadget
deine Api lösung hjbremer ist noch ein tick besser als meine, da du ja nur das Gadget Manual Refresht
und nicht das ganze Fenster, cool kommt bei mir mit in meine Samlung
und nicht das ganze Fenster, cool kommt bei mir mit in meine Samlung

Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
Re: Flackerndes Text-Gadget
Aus Jux noch die Dummy-Lösung
:
Habe ich so gemacht in der Vor-Canvas-Zeit.

Code: Alles auswählen
Declare TimerCallBack()
Font12b.i = LoadFont(#PB_Any, "Arial", 12, #PB_Font_Bold)
#window = 0
#text = 0
#text1 = 1
#Dummy = 2
OpenWindow(#window, 0, 0, 200, 100, "es flackert nicht", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
TextGadget(#text, 10, 40, 180, 20, "")
SetGadgetFont(#text, FontID(Font12b))
TextGadget(#text1, 10, 60, 180, 20, "")
SetGadgetFont(#text1, FontID(Font12b))
TextGadget(#Dummy, 0, 0, 1, 1, "")
AddWindowTimer(#window, 77, 500)
BindEvent(#PB_Event_Timer, @TimerCallBack(), #window, 77)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Procedure TimerCallBack()
Static i
i = i + 1
SetGadgetText(#Dummy, "")
SetGadgetText(#text, Str(i) + ". Durchlauf")
SetGadgetText(#text1, Str(i+1) + ". Durchlauf + 1")
EndProcedure
- hjbremer
- Beiträge: 822
- Registriert: 27.02.2006 22:30
- Computerausstattung: von gestern
- Wohnort: Neumünster
Re: Flackerndes Text-Gadget
CoolHelle hat geschrieben: Habe ich so gemacht in der Vor-Canvas-Zeit.
hört sich an wie; Anno Domini Nostri Jesu Christi 1845
Purebasic 5.70 x86 5.72 X 64 - Windows 10
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Re: Flackerndes Text-Gadget
Was ist da jetzt der Trick? Du setzt ein Gadget an 0,0 mit der Größe 1,1 und setzt dann immer wieder diesen GadgetText auf "",Helle hat geschrieben:Habe ich so gemacht in der Vor-Canvas-Zeit.
mit dem Resultat das die anderen Gadgets nicht flackern?
Macht irgendwie keinen Sinn für mich, habe ich noch nie gesehen, aber auch das flackern (das ich nicht habe)
macht von der WinAPI-Programmierung her m.M.n. keinen Sinn. Da muss doch irgend etwas bei PB intern nicht stimmen...?
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
- silbersurfer
- Beiträge: 175
- Registriert: 06.07.2014 12:21
Re: Flackerndes Text-Gadget
Danilo schrieb
danach kommen die anderen Strings die von dem Refresh wahrscheinlich nicht mehr betroffen sind.. denn es Flackert nicht mehr
Ist jetzt nur so ein Bauch gefühl aber anders kann ich mir das auch nicht erklären
Ich habe das gefühl wenn er es so macht wird das Fenster Refresht, aber da er durch den null String nichts ändert Flackert das fenster nichtWas ist da jetzt der Trick? Du setzt ein Gadget an 0,0 mit der Größe 1,1 und setzt dann immer wieder diesen GadgetText auf "",
mit dem Resultat das die anderen Gadgets nicht flackern?
Macht irgendwie keinen Sinn für mich
danach kommen die anderen Strings die von dem Refresh wahrscheinlich nicht mehr betroffen sind.. denn es Flackert nicht mehr
Ist jetzt nur so ein Bauch gefühl aber anders kann ich mir das auch nicht erklären
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander