B+ Fenster skinnen bzw. mit Shape überlagern
Übersicht

![]() |
EPSBetreff: B+ Fenster skinnen bzw. mit Shape überlagern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi, mein erster Beitrag, ich hoffe jemanden interessierts. Voraussetzung sind ein paar Deklarationen in der user32.decls und gdi32.decls (siehe Funktion). Los gehts:
Code: [AUSKLAPPEN] img = CreateImage(300,200)
SetBuffer ImageBuffer(img) Color $FF,$00,$FF: Rect 0,0,300,200,1 Color $FF,$00,$00: Oval 0,0,300,200,1 win = CreateWindow("hallo",300,200,300,200,Desktop(),0) skin_window(win,img,$FF00FF) Repeat If KeyHit(1) Then Exit Select WaitEvent() Case $803: Exit End Select Forever FreeImage img Function skin_window(win, img, col) ;============================================================================================================== ; Fenster skinnen (Das Bild muß so groß sein wie das Fenster) ; ; win = Handle eines Fenster (ermittelt durch CreateWindow) ; img = Handle eines Bildes (ermittelt durch LoadImage o.ä.) ; col = Maskierungsfarbe (in der Form: RGB) ; ;============================================================================================================== ; Nutzt folgende API-Funktionen: ; ; User32.decls: SetWindowRgn%(hWnd%, hRgn%, bRedraw%) ; Gdi32.decls: CreateRectRgn%(X1%, Y1%, X2%, Y2%) ; CombineRgn%(hDestRgn%, hSrcRgn1%, hSrcRgn2%, nCombineMode%) ; DeleteObject%(hObject%) ; ;============================================================================================================== ; Original: James Freeman (dan_upright); darth_pingu@yahoo.co.uk; http://oma.cultoftheinept.com ; Found: http://www.blitzbasic.com; Code archives; Declared by its author to be Public Domain code. ; Modified: Thomas Tratz (EPS); webmaster@east-power-soft.de; http://www.east-power-soft.de ;============================================================================================================== w = ImageWidth(img) h = ImageHeight(img) cnv = CreateCanvas(0,0,w,h,win) SetBuffer CanvasBuffer(cnv) DrawBlock img,0,0 hWnd = QueryObject(win, 1) hRgn = api_CreateRectRgn(0, 0, w, h) ibuf = ImageBuffer(img) col = col Or $FF000000 LockBuffer ibuf For y = 0 To h - 1 For x = 0 To w - 1 pixel = ReadPixelFast(x, y, ibuf) If pixel = col Then hTempRgn = api_CreateRectRgn(x, y, x + 1, y + 1) api_CombineRgn(hRgn, hRgn, hTempRgn, 3) ;--> Rgn_XOR api_DeleteObject(hTempRgn) End If Next Next UnlockBuffer ibuf api_SetWindowRgn(hWnd, hRgn, True) api_DeleteObject(hRgn) End Function |
||
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier
Man kann sich öfter als zweimal im Leben halb tot lachen. |
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
man kann das aber, glaube ich, auch ohne die userlib machen, indem man einfach mit dem desktopbuffer und einem canvas rumspielt. das geht zwar nicht als permanenter skin, aber zumindest für kurze logoeinblendungen reicht es. | ||
MrKeks.net |
![]() |
Sebastian |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich dachte ich schrieb das mal schnell für B3d um :
BlitzBasic: [AUSKLAPPEN]
Der einzige Haken ist das die Fesnsterleiste und die Umrandung nicht überzeichenbar ist ....(wie im Beispiel) Man könnte die maske anpassen oder mit weiteren GDI-befehlen ziechen ... Ich werd mal die maske anpassen ! |
||
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf ! |
![]() |
Sebastian |
![]() Antworten mit Zitat ![]() |
---|---|---|
So hier jetzt der Code mit der entsprechenden Maske :
BlitzBasic: [AUSKLAPPEN]
Kurze erläuterung : Der Rand um ein Fenster ist 3px stark die Titelleiste 22px. Es ist daher besser sich eine Maske und eine Skinn zu erstellen. |
||
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf ! |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
nettes system. | ||
between angels and insects |
![]() |
Sebastian |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es ist eine mittelschwere GAU (größte annehmbare Unfunktion) aufgetreten.
Wird während ein geshaptes Progg läuft eine Vollbilg Anwendung gestarted kann es nen Memory Acess geben oder auch nicht. Je nach dem ob das andre Progg GDI benutzt oder nicht ....... |
||
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf ! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group