direkt auf Desktop malen? (ähnlich Win-BüroklammerAssistent)

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
SirCus
Beiträge: 182
Registriert: 10.09.2004 11:44
Wohnort: München
Kontaktdaten:

direkt auf Desktop malen? (ähnlich Win-BüroklammerAssistent)

Beitrag von SirCus »

tag allerseits
ich versuche etwas ähnliches wie diesen Büroklammer Assistenten zu machen. Will allerdings nicht Merlin etc benutzen.

Kann ich irgendwie Transparente Sprites/3DSprites auf den Desktop malen?

Hab jetz mal Unsichtbare Fenster benutzt, aber sobald ich z.B. DrawText ein bisschen Text ausgeben möchte, wird das Fenster sichtbar.. erwartet hatte ich, dass es unsicthbar bleibt, und nur der Text sichtbar wird.. wohl mein Denkfehler.

danke
M.
2D Game H.E.R.A. (Entwicklung eingefroren)
www.chamaeleo-fx.de.vu

- mein Lieblingszitat
"die Informationsumwelt wird von einer fürchterlichen Menge an Unsinn und Lügen verschmutzt" (Stanislaw Lem, Lokaltermin, 1954 (!) )
http://www.stanislaw-lem.de/zitate/zitate.shtml
Benutzeravatar
SirCus
Beiträge: 182
Registriert: 10.09.2004 11:44
Wohnort: München
Kontaktdaten:

Beitrag von SirCus »

ich denke am besten ist es, SkinWin vonDanilo zu nutzen. Ich versuchs mal damit.
Das Problem das ich noch habe ist, wie mache ich es, dass der "Agent" immer im Vordergrund ist, auch wenn eine andere Anwendung gerade aktiv ist?

- edit :

gefunden:
SetWindowPos_(WindowID(WindowID), #HWND_TOPMOST, WindowX(), WindowY(), WindowWidth(), WindowHeight(), #SWP_SHOWWINDOW)
2D Game H.E.R.A. (Entwicklung eingefroren)
www.chamaeleo-fx.de.vu

- mein Lieblingszitat
"die Informationsumwelt wird von einer fürchterlichen Menge an Unsinn und Lügen verschmutzt" (Stanislaw Lem, Lokaltermin, 1954 (!) )
http://www.stanislaw-lem.de/zitate/zitate.shtml
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

gab da kürzestens erst was gepostet .. mit skinwin vom Danilo und Ton


im thread
3D Model als EXE ohne Player
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
SirCus
Beiträge: 182
Registriert: 10.09.2004 11:44
Wohnort: München
Kontaktdaten:

Beitrag von SirCus »

ja, mit skinwin bin ich jetz grade dran.

dabei taucht aber ein Problem auf:
ich tausche für die Animation des "Sprites" die Bilder aus, und führe dann ein Skinwin aus.

Nach einiger Zeit..bzw eigen Animationsfolgen, spätestens aber nach dem 2. Richtungswechsel irgendwann, wird zwar die Siliuette korrekt ausgeschnitten, aber das Bild eines alten Sprites bleibt im hintergrund sichtbar, der rest wird entweder schwarz oder Bildschirmhitnergrundmässig angezeigt..

versuchts mal:
http://www.chamaeleo-fx.de.vu/Dateien/TamaCham.rar

Code, Exe und Bitmaps liegen bei, 120kb
Danilos PureTools werden benötigt. (SkinWin)

Einfach ausführen, das Tier läuft von links nach rechts .. irgendwann werdet ihr bei der animierten Vorderpfote einen Grafikfehler im Hintergurnd feststellen, nach einem Richtungswechsel evtl sogar am ganzen Tier.
2D Game H.E.R.A. (Entwicklung eingefroren)
www.chamaeleo-fx.de.vu

- mein Lieblingszitat
"die Informationsumwelt wird von einer fürchterlichen Menge an Unsinn und Lügen verschmutzt" (Stanislaw Lem, Lokaltermin, 1954 (!) )
http://www.stanislaw-lem.de/zitate/zitate.shtml
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

auf dem Trichter die skinwin's bei Bedarf neru zu erzeugen war ich auch zuerst .. das ging aber aus dem geschilderten Grund nicht ..

Ich hab einfach (einfach??) n Sack voll Fenster generiert die ich nacheinander per Hidewindow() anknipse und ausknipse.

Kostet zwar Speicher und dauert beim Initialisieren ne Ewigkeit (je nach Größe und Anzahl der zu erzeugenden Fenster) aber es geht.

Dein Chamäleon frisst zuviel Speicher. und es verschwindet tlw. nach einer gewissen Zeit.

Ich hab mir mal erlaubt Deine Echsen zu missbrauchen.
rechter Mausklick auf der Echse läss die laufen. (nur nach Rechts aber immerhin)
ESC oder F10 oder Alt-F4 wenn auf die Echse getippt wurde beendet das Programm (undokumentierte evenWParam() Funktion)

Code: Alles auswählen



Global maxx,maxy,hwnd,x,y
maxx = GetSystemMetrics_(#SM_CXSCREEN)
maxy = GetSystemMetrics_(#SM_CXSCREEN)


LengSound=120
LengSound1=224
LengSound2=446

AnimPause=0
AnimPause1=0
AnimPause2=0
UsePNGImageDecoder()


Image0=CatchImage(0,?SkinPicture0)
Image1=CatchImage(1,?SkinPicture1)
Image2=CatchImage(2,?SkinPicture2)
Image3=CatchImage(3,?SkinPicture3)
Image4=CatchImage(4,?SkinPicture4)
Image5=CatchImage(5,?SkinPicture5)
Image6=CatchImage(6,?SkinPicture6)



Procedure updateallwins()
   For I=0 To   6
     UseWindow(i)
     MoveWindow(x,y)
   Next i
EndProcedure

Procedure MoveIt(S)
   x=x+S
   Updateallwins()
EndProcedure 


b=ImageWidth()
h=ImageHeight()

OpenWindow(6,maxx-b,0,b,h,#PB_Window_BorderLess|#PB_Window_Invisible,"PB - SkinWin Example 4")
CreateGadgetList(WindowID(6))
SkinWin(WindowID(6),Image6)
OpenWindow(5,maxx-b,0,b,h,#PB_Window_BorderLess|#PB_Window_Invisible,"PB - SkinWin Example 4")
CreateGadgetList(WindowID(5))
SkinWin(WindowID(5),Image5)
OpenWindow(4,maxx-b,0,b,h,#PB_Window_BorderLess|#PB_Window_Invisible,"PB - SkinWin Example 4")
CreateGadgetList(WindowID(4))
SkinWin(WindowID(4),Image4)
OpenWindow(3,maxx-b,0,b,h,#PB_Window_BorderLess|#PB_Window_Invisible,"PB - SkinWin Example 4")
CreateGadgetList(WindowID(3))
SkinWin(WindowID(3),Image3)
OpenWindow(2,maxx-b,0,b,h,#PB_Window_BorderLess|#PB_Window_Invisible,"PB - SkinWin Example 4")
CreateGadgetList(WindowID(2))
SkinWin(WindowID(2),Image2)
OpenWindow(1,maxx-b,0,b,h,#PB_Window_BorderLess|#PB_Window_Invisible,"PB - SkinWin Example 4")
CreateGadgetList(WindowID(1))
SkinWin(WindowID(1),Image1)
OpenWindow(0,maxx-b,0,b,h,#PB_Window_BorderLess|#PB_Window_Invisible,"PB - SkinWin Example 4")
CreateGadgetList(WindowID())
SkinWin(WindowID(),Image0)
HideWindow(0,0)
SetWindowPos_(WindowID(0),#HWND_TOPMOST,0,0,0,0,#swp_nosize)




;    CreateThread(@moveit(),0)
Repeat
  evnt=WaitWindowEvent()
  If evnt<>512
    Debug evnt
    Debug EventwParam()
    Debug EventlParam()
    
  EndIf
  Select EventwParam()
  Case 27
    End
  Case 121
    End
  EndSelect
  Select evnt
    ; IF LeftMouseButton pressed...
    
  Case #WM_LBUTTONDOWN
    SendMessage_(WindowID(),#WM_NCLBUTTONDOWN, #HTCAPTION,0)
  Case #WM_RBUTTONDOWN
  For lauf=1 To 20
  
    For i= 0 To 5
      Moveit(2)
      HideWindow(i+1,0)
      HideWindow(i,1)
      Delay(150)
    Next i
    HideWindow(0,0)
    HideWindow(6,1)
    Next Lauf
  Case #PB_EventGadget
    Select EventGadgetID()
    Case 1 ; EXIT
      End
    EndSelect
    ; pressed ALT+F4 ??
  Case #PB_EventCloseWindow
    End
  EndSelect
  
  x=WindowX()
  y=WindowY()
  
  If x<0
    x=0
  EndIf
  If y<0
    y=0
  EndIf
  
  If x>(maxx-WindowWidth())
    x=maxx-WindowWidth()
  EndIf
  If y >(maxy-WindowHeight()*2)
    y=maxy-WindowHeight()*2
  EndIf
Updateallwins()

  
ForEver

End

DataSection
SkinPicture0:IncludeBinary "Cham1-0.PNG"
SkinPicture1:IncludeBinary "Cham1-1.PNG"
SkinPicture2:IncludeBinary "Cham1-2.PNG"
SkinPicture3:IncludeBinary "Cham1-3.PNG"
SkinPicture4:IncludeBinary "Cham1-4.PNG"
SkinPicture5:IncludeBinary "Cham1-5.PNG"
SkinPicture6:IncludeBinary "Cham1-6.PNG"
EndDataSection
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
SirCus
Beiträge: 182
Registriert: 10.09.2004 11:44
Wohnort: München
Kontaktdaten:

Beitrag von SirCus »

hm. is das ein bug , oder gehört das so? ne weile funktioniert das ja prima..
2D Game H.E.R.A. (Entwicklung eingefroren)
www.chamaeleo-fx.de.vu

- mein Lieblingszitat
"die Informationsumwelt wird von einer fürchterlichen Menge an Unsinn und Lügen verschmutzt" (Stanislaw Lem, Lokaltermin, 1954 (!) )
http://www.stanislaw-lem.de/zitate/zitate.shtml
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

Danilo fragen
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
ChaOsKid
Beiträge: 66
Registriert: 29.08.2004 15:07
Wohnort: Oktoberfest

Beitrag von ChaOsKid »

hi SirCus,

ich dachte immer das SkinWin() nur das fenster zuschneidet,
aber das zeichet ja sogar auf das fenster, meistens zumindest ;)
wenn man vor SkinWin() das image auf das fenster zeichnet, dann geht es scheinbar ohne fehler....
und ich hab festgestellt das das tier fast stehen bleibt, wenn man mit der maus an ihm rumfummelt :)
da hab ich jetzt noch schnell einen timer reingebastelt...
hier mal der geänderte code von deiner hauptschleife:

Code: Alles auswählen

;
; immer im Vordergrund bleiben (einmal aufrufen reicht)
MakeStayOnTop(WindowID(WindowID), 1)
Timer = 40
Zeit = ElapsedMilliseconds() + Timer
Repeat 

  If Zeit < ElapsedMilliseconds()
    Zeit = ElapsedMilliseconds() + Timer
    Move_Cham()
    Anim_Cham()
    StartDrawing(WindowOutput())
    DrawImage(UseImage(CurrentCham), 0, 0)
    StopDrawing()
    SkinWin(WindowID(WindowID), UseImage(CurrentCham))
  EndIf
      
  Delay(5) 
   
Until WindowEvent() = #PB_Event_CloseWindow
mfG
Tobi
Benutzeravatar
SirCus
Beiträge: 182
Registriert: 10.09.2004 11:44
Wohnort: München
Kontaktdaten:

Beitrag von SirCus »

:allright:
das klappt hervorragend! du bist für heute mein Held :)
2D Game H.E.R.A. (Entwicklung eingefroren)
www.chamaeleo-fx.de.vu

- mein Lieblingszitat
"die Informationsumwelt wird von einer fürchterlichen Menge an Unsinn und Lügen verschmutzt" (Stanislaw Lem, Lokaltermin, 1954 (!) )
http://www.stanislaw-lem.de/zitate/zitate.shtml
Antworten