Direkt auf Desktop zeichnen

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
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

Re: Direkt auf Desktop zeichnen

Beitrag von NicTheQuick »

Du kannst auch Teile deines Fensters transparent machen oder es an beliebigen Stellen sozusagen durchlöchern, dass man den Hintergrund hindurch sieht. Dann kannst du auch deine TopMostWindow-Variante verwenden und überall, wo noch nichts gezeichnet wurde das Fenster gar nicht erst anzeigen lassen, sodass man den Hintergrund noch sieht.

Suche dazu z.B. mal nach SetWindowRgn hier oder im englischen Forum.
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: Direkt auf Desktop zeichnen

Beitrag von bobobo »

Es gibt per DirectX wohl die Möglichkeit direkt auf den Desktophintergrund zu rendern
der VLC-Player kann dort zumindest Videos darstellen.
da der QuelllCode des VLC verfügbar ist, könnte sich ein Interessent ja mal
da dranmachen sowas mit PB zu lösen .. /:-> .

guckmalemal das hier .. das malt "quasi" auf den Desktop und lässt die
Icons frei (nicht so richtig, aber so ähnlich)

Code: Alles auswählen

LoadFont(0,"",32)
Debug ElapsedMilliseconds()
Time$ = FormatDate("%hh:%ii",Date()-ElapsedMilliseconds()/1000+(3600*8))
ExamineDesktops()
w=DesktopWidth(0):h=DesktopHeight(0) ;
tw=30;428 ;textwidth (gemessen)
th=120 ;textheight(gemessen)
del=333
del=33
ro.l=235:go.l=80:bo.l=80
;r=82:g=111:b=bo
py=h-th
For i=0 To 30
FreeFont(0)
  LoadFont(0,"",Random(22)+10)
  hdc = GetWindowDC_(GetShellWindow_())
  SelectObject_(hdc,FontID(0))
  SetBkMode_(hdc,#TRANSPARENT)
  r=ro-20+Random(40):g=go-20+Random(40):b=bo-20+Random(40)
  px=Random(w-tw):py=h-th:py=Random(50)+(h-th-50);:py=h-th
  SetTextColor_(hdc,#Black)
  TextOut_(hdc,px+1,py+1,Time$,5)
  Select Random(2)
  Case 0
  SetTextColor_(hdc,#Yellow)
  Case 1
  SetTextColor_(hdc,#Red)
  Case 2
  SetTextColor_(hdc,#Green)
  EndSelect
  TextOut_(hdc,px,py,Time$,5)
  For iv=1 To 512
    InvalidateRect_(iv,0,0)   ;Soll den Rest bereinigen (iconebene was auch immer)
  Next iv
  del+33
  Debug del
  ReleaseDC_(GetShellWindow_(),hdc)
  Delay(del)
Next
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Antworten