MaxGui + Transparentes Canvas (auf WinXP)
Übersicht

PhillipKBetreff: MaxGui + Transparentes Canvas (auf WinXP) |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Huhu!
Ich habe ein problem ![]() Für nen Kumpel und mich habe ich die tage ein wenig was gebastelt, was diverse Schusswinkel in einem flashgame anzeigt. Das ganze hat mir soviel spass gemacht, mal was anderes als das eigene programm zu bearbeiten, das schon richtig was zusammen gekommen ist. Zeigt ruhig mit dem finger auf mich und schreit cheater odersonstwas, is mir egal. Hier gehts um ne klare frage und nicht um zwielichtige aktivitäten ![]() Das ganze habe ich über ein Tranzparentes fenster und ein Canvas gelöst. Das Canvas ist, zumindest bei mir hier auf Win7, mit transparent. Auf dem WinXp rechner meines kumpels leider nicht. Das Fenster ist zwar, wie auch gewünscht, per winApi transparent und "durchklickbar", das canvas aber nicht. Ausserdem hinterlässt es grafische fragmente, überall dort, wo das fenster "redrawt" wurde. Das ist blöde, da ein Screenshot des gesamten "flashgames" zulange dauert und so nicht viel mit fps ist, und alternative möglichkeiten fallen mir nicht ein. Aber: Es gibt auch auf WinXp rechnern die möglichkeit, diverse Splashscreens ohne eckige kanten anzuzeigen -> Wie wird soetwas dort gelöst? Arbeitet das ganze einfach mit Panels und nimmt als background texture das entsprechende bild, oder wird dafür irgendeine form von hacks verwendet? Je nach performance könnte ich mir auch vorstellen, direkt in den Screenbuffer zu plotten oder sonstige scherze zu machen, wobei es dann wieder zu der frage kommt: "Okay programm ist aus, was nun. Wie werde ich das ganze los?" Meine erste version des dings lief relativ ähnlich wie die panel idee. Allerdings war das eine panel so sau lahm, das ich das fenster in mehrere hundert unterteilt habe und jedem eine eigene pixmap zugeordnet habe. Je nachdem, was ich geändert hatte, dort wurde eben das panel neu bestückt. Aber das war auch.. solala. Einfach mistig. Irgendwelche ideen?^^ |
||
Sirrus |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Der Beitrag is zwar schon etwas älter, aber da keiner ne Antwort hatte, schreib ich mal ne Alternative:
Nen Splash mach ich etwas einfacher ohne winApi, indem ich das transparente Fenster und Canvas nur simuliere. Zunächst hat das nicht funktioniert, hab dann lange probiert bis ich festgestellt habe, das DrawImage an Postion 0,0 vom Canvas nicht richtig funzte. Hab dann die Höhe um 1 vergrößert und DrawImage auf Position 0,1 gesetzt, jetzt funzt das. Ist vielleicht nicht das, was du dir erwartet hast, aber is n Splash der auf WinXP und Win7 funzt. Code: [AUSKLAPPEN] ;Maskenfarbe initialisieren
Const R=255, G=0, B=255 ;Splash laden, maskieren und Größe holen Spl=LoadImage("Splash.bmp") MaskImage Spl,R,G,B W=ImageWidth(Spl) H=ImageHeight(Spl)+1 ;Desktop-Mitte ermitteln L=(ClientWidth(Desktop())-W)/2 T=(ClientHeight(Desktop()-H)/2 ;entsprechenden Bereich aus dem Desktop "greifen" Back=CreateImage(W,H) SetBuffer DesktopBuffer() GrabImage Back,L,T ;Fenster und Canvas erstellen und verstecken Win=CreateWindow("",L,T,W,H,Desktop(),16) HideGadget Win Can=CreateCanvas(0,0,W,H,Win) ;Hintergrund und Splash auf Canvas "malen" und anzeigen SetBuffer CanvasBuffer(Can) DrawBlock Back,0,0 DrawImage Spl,0,1 ShowGadget Win ;kleine Schleife zum testen T=CreateTimer(50) Repeat A=WaitEvent() If A=$4001 Then C=C+1 If A=$101 Then Z=EventData() Until (Z=1)or(C=500) |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group