SkinWindow (optimierte Methode)
SkinWindow (optimierte Methode)
Hab' mich heute Nacht mal (wieder) mit den WindowSkins
beschäftigt,weil ich eventuell gDesign auch damit ausstatten will.
Das Problem ist immer die Geschwindigkeit gewesen.
(bei größeren Fenstern) Daher hatte ich damals den SkinGenerator gemacht
und Danilo (aus den gleichen Gründen nehme ich an) die
SkinWinFast lib. In beiden Fällen müssen dafür aber die Maskendaten
gespeichert werden, sind also schon vorberechnet.
Mit dieser kleinen Mini-Lib (1,8 KB)
Download: http://www.thinkrelative.de/skin.zip
geht es auch in den meisten Fällen ohne, denke ich.
Wenn ich mich an SkinWin orientiere, und das muß ich, da ja die
meisten damit arbeiten werden, ist meine 'etwas andere' Routine
bis zu 8 mal schneller.
Testet doch bitte mal.
Gruß,
Mischa
beschäftigt,weil ich eventuell gDesign auch damit ausstatten will.
Das Problem ist immer die Geschwindigkeit gewesen.
(bei größeren Fenstern) Daher hatte ich damals den SkinGenerator gemacht
und Danilo (aus den gleichen Gründen nehme ich an) die
SkinWinFast lib. In beiden Fällen müssen dafür aber die Maskendaten
gespeichert werden, sind also schon vorberechnet.
Mit dieser kleinen Mini-Lib (1,8 KB)
Download: http://www.thinkrelative.de/skin.zip
geht es auch in den meisten Fällen ohne, denke ich.
Wenn ich mich an SkinWin orientiere, und das muß ich, da ja die
meisten damit arbeiten werden, ist meine 'etwas andere' Routine
bis zu 8 mal schneller.
Testet doch bitte mal.
Gruß,
Mischa
@MLK??
Was ist das jetzt? Ein Schliereneffekt beim verschieben?
Wenn ich das Beispiel-Fenster etwas durch die Gegend schiebe
und schnell mal die Drucktaste drücke kriege ich auch so
ein schönes Bild. (Mit SkinWin übrigens auch
)
Etwas genauer bitte? Ist das Fenster jetzt in Bewegung während der
Aufnahme, oder steht es still. Rekonstruiert JaPBe ordentlich seinen
eigenen Hintergrund?
Fehler, oder nicht?
Was ist das jetzt? Ein Schliereneffekt beim verschieben?
Wenn ich das Beispiel-Fenster etwas durch die Gegend schiebe
und schnell mal die Drucktaste drücke kriege ich auch so
ein schönes Bild. (Mit SkinWin übrigens auch

Etwas genauer bitte? Ist das Fenster jetzt in Bewegung während der
Aufnahme, oder steht es still. Rekonstruiert JaPBe ordentlich seinen
eigenen Hintergrund?
Fehler, oder nicht?

- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Hab zum testen mal das example erweitert:
Mein Eindruck:
Mischas Lib ist wesentlich schneller als SkinWin und in etwa gleich mit
SkinWinFast. Wie man das messen könnte, ist mir nichts zu eingefallen
Code: Alles auswählen
Enumeration
#SkinWindow
#SkinWin
#SkinWinFast
EndEnumeration
#FLAG = #SkinWindow ;
winflags=#PB_Window_BorderLess|#PB_Window_ScreenCentered|#PB_Window_Invisible
CompilerSelect #FLAG
CompilerCase #SkinWinFast
image = LoadFastSkin("test.PBS")
OpenWindow(0,0,0,FastSkinWidth(image),FastSkinHeight(image),winflags,"SkinWindow")
SkinWinFast(WindowID(),Image)
CompilerCase #SkinWin
image=LoadImage(#PB_Any,"test.bmp")
OpenWindow(0,0,0,ImageWidth(),ImageHeight(),winflags,"SkinWindow")
SkinWin(WindowID(),ImageID())
CompilerCase #SkinWindow
image=LoadImage(#PB_Any,"test.bmp")
OpenWindow(0,0,0,ImageWidth(),ImageHeight(),winflags,"SkinWindow")
SkinWindow(WindowID(),ImageID())
CompilerEndSelect
HideWindow(0,0)
Repeat
event=WaitWindowEvent()
If event=#WM_LBUTTONDOWN
SendMessage_(WindowID(),#WM_NCLBUTTONDOWN, #HTCAPTION,0)
EndIf
Until GetAsyncKeyState_(#VK_ESCAPE)
CompilerIf #FLAG = #SkinWindow
FreeWindowSkin(WindowID())
CompilerEndIf
Mischas Lib ist wesentlich schneller als SkinWin und in etwa gleich mit
SkinWinFast. Wie man das messen könnte, ist mir nichts zu eingefallen
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

@MLK: Aha. Danke!
Das ist normal. Wie bereits erwähnt, ist das bei SkinWin nicht anders.
Abgesehen davon ist das Ding 1024 * 768 und hat sicherlich ein paar
Zacken und Lücken mehr als so ziemlich jedes sinnvoll geskinnte
Fenster jemals hätte.
Ist nur ein Beispiel, das die Kalkulation-Geschwindigkeit zeigen soll.
Schlieren-Effekte hat man ansonsten bei eingeschalteter Fensteranimation
aber bei so ziemlich jedem geskinnten Fenster.
(Mehr, oder weniger, je nach Größe und Form)
Gruß,
Mischa
Das ist normal. Wie bereits erwähnt, ist das bei SkinWin nicht anders.
Abgesehen davon ist das Ding 1024 * 768 und hat sicherlich ein paar
Zacken und Lücken mehr als so ziemlich jedes sinnvoll geskinnte
Fenster jemals hätte.
Ist nur ein Beispiel, das die Kalkulation-Geschwindigkeit zeigen soll.
Schlieren-Effekte hat man ansonsten bei eingeschalteter Fensteranimation
aber bei so ziemlich jedem geskinnten Fenster.
(Mehr, oder weniger, je nach Größe und Form)
Gruß,
Mischa
- rayman1970
- Beiträge: 89
- Registriert: 01.09.2004 16:10
- Wohnort: Troisdorf bei Bonn
- Kontaktdaten:
Hi Mischa !
Dein optimiertes SkinWin ist echt super genial schnell !! Mein Kompliment !!!
Ich werde es selbstverständlich in meine Programme einbauen .
Mir ist aufgefallen das beim original SkinWin die transparente Farbe , ohne Eingabe der Koordinaten , in der linken , oberen Ecke definiert wird . Bei dir passiert das in der rechten , oberen Ecke . Ich hatte meinen alten SkinWin gegen deinen Neuen ausgetauscht und hatte dadurch zuerst Kompatibilitätsprobleme .
Aber alles in allem kann ich nur sagen : PERFEKT !!!
Gruss Rayman
Dein optimiertes SkinWin ist echt super genial schnell !! Mein Kompliment !!!
Ich werde es selbstverständlich in meine Programme einbauen .
Mir ist aufgefallen das beim original SkinWin die transparente Farbe , ohne Eingabe der Koordinaten , in der linken , oberen Ecke definiert wird . Bei dir passiert das in der rechten , oberen Ecke . Ich hatte meinen alten SkinWin gegen deinen Neuen ausgetauscht und hatte dadurch zuerst Kompatibilitätsprobleme .
Aber alles in allem kann ich nur sagen : PERFEKT !!!
Gruss Rayman
- Hroudtwolf
- Beiträge: 1416
- Registriert: 30.10.2004 23:33
- Kontaktdaten:
Wenn ihr gerne sehen wollt wie man sowas selbst machen kann...
http://www.purebasic-lounge.de/viewtopic.php?t=1657
http://www.purebasic-lounge.de/viewtopic.php?t=1657
@Hroudtwolf
Du meinst wie 'SetLayeredWindowAttributes_()' also Windows
das selbst macht, gell?
Und übrigens ist Windows erst ab 2000 erwachsen genug das selber
tun zu können. (Hättest Du evtl. dabei schreiben können?)
Mit 98/Me muß man das dann wirklich selber machen, oder aber
z.B. meine Lib verwenden.
Ansonsten, nettes Beispiel HW.
Gruß,
Mischa
Du meinst wie 'SetLayeredWindowAttributes_()' also Windows
das selbst macht, gell?

Und übrigens ist Windows erst ab 2000 erwachsen genug das selber
tun zu können. (Hättest Du evtl. dabei schreiben können?)
Mit 98/Me muß man das dann wirklich selber machen, oder aber
z.B. meine Lib verwenden.
Ansonsten, nettes Beispiel HW.

Gruß,
Mischa
- Hroudtwolf
- Beiträge: 1416
- Registriert: 30.10.2004 23:33
- Kontaktdaten: