Fensterinhalt als Bild
Verfasst: 26.05.2011 14:27
Bild inhalt als Image sichern etwas tunen und wieder auf dem Fenster darstellen
Das zugehörige Schimmel1.png gibt es hier ("Ziel speichern unter..")
(oder als Alternative das hier )
der Code wurde nun etwas getunt
und nochmal
Das zugehörige Schimmel1.png gibt es hier ("Ziel speichern unter..")
(oder als Alternative das hier )
der Code wurde nun etwas getunt
und nochmal
Code: Alles auswählen
; Schimmelfenster
; tlw. Droopy-code
; in WinXp geht's
Enumeration
#Window_0
EndEnumeration
Enumeration
#Button_0
#Button_1
#Button_2
#String_0
#Web_0
#Combo_0
#String_1
#Button_3
#Image_back
EndEnumeration
Enumeration
#image_win
#image_schimmel1
EndEnumeration
Procedure Open_Window_0()
hwnd= OpenWindow(#Window_0, 0, 0, 800, 600, "Schwachsinn", #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
If CreateGadgetList(WindowID(#Window_0))
ImageGadget(#image_back,0,0,800,600,0)
HideGadget(#Image_back,1)
ButtonGadget(#Button_0, 40, 20, 80, 20, "Wartmal")
ButtonGadget(#Button_1, 40, 50, 80, 20, "Aufrufen")
ButtonGadget(#Button_2, 40, 80, 80, 20, "Tu Nix")
WebGadget(#Web_0, 10, 210, 780, 370, "about:blank")
ComboBoxGadget(#Combo_0, 390, 20, 360, 20)
StringGadget(#String_1, 10, 190, 780, 20, "")
ButtonGadget(#Button_3, 40, 110, 80, 20, "Ende")
EndIf
ProcedureReturn hwnd
EndProcedure
Procedure CaptureScreenPart(Left.l, Top.l, Width.l, Height.l)
border= GetSystemMetrics_(#SM_CXBORDER) ;ermittlung der Breite der Rahmen
tlh=GetSystemMetrics_(#SM_CYCAPTION) ; und titelleiste
dm.DEVMODE
BMPHandle.l
srcDC = CreateDC_("DISPLAY", "", "", dm)
trgDC = CreateCompatibleDC_(srcDC)
BMPHandle = CreateCompatibleBitmap_(srcDC, Width, Height)
SelectObject_( trgDC, BMPHandle)
BitBlt_( trgDC, 0, 0, Width, Height, srcDC, Left+border*3, Top+tlh+border*3, #SRCCOPY)
DeleteDC_( trgDC)
ReleaseDC_( BMPHandle, srcDC)
CaptureScreenHeight=Height
CaptureScreenWidth=Width
CaptureScreenBMPHandle=BMPHandle
ProcedureReturn BMPHandle
EndProcedure
Procedure CaptureWindow(Handle.l) ; ### The Window must be visible !
If Handle
WindowSize.RECT
GetWindowRect_(Handle, @WindowSize)
ProcedureReturn CaptureScreenPart(WindowSize\Left, WindowSize\Top, WindowSize\Right - WindowSize\Left, WindowSize\Bottom - WindowSize\Top)
EndIf
EndProcedure
hwnd = Open_Window_0()
AddGadgetItem(#Combo_0,-1,"http://www.purebasic.com/")
AddGadgetItem(#Combo_0,-1,"http://www.google.com/")
AddGadgetItem(#Combo_0,-1,"http://www.dasendedesinternet.de/")
UsePNGImageDecoder()
LoadImage(#image_schimmel1,"schimmel1.png") ;Bild mit Transparenz
Repeat
Event = WaitWindowEvent(12)
WindowID = EventWindow()
GadgetID = EventGadget()
EventType = EventType()
If Event = #PB_Event_Gadget
If GadgetID = #Button_0 And GetGadgetText(#Button_0)="Wartmal"
winbild=CaptureWindow(WindowID(#Window_0))
HideGadget(#Combo_0,1)
HideGadget(#String_1,1)
HideGadget(#Button_1,1)
HideGadget(#Button_2,1)
HideGadget(#Button_3,1)
HideGadget(#String_1,1)
HideGadget(#Combo_0,1)
HideGadget(#Web_0,1)
CreateImage(#image_win,WindowWidth(#window_0),WindowHeight(#window_0))
StartDrawing(ImageOutput(#image_win))
DrawImage(winbild,0,0)
DrawingMode(#PB_2DDrawing_AlphaBlend)
DrawImage(ImageID(#image_schimmel1),0,0,ImageWidth(0),ImageHeight(0))
StopDrawing()
SetGadgetState(#Image_back,ImageID(#image_win))
HideGadget(#image_back,0)
DisableGadget(#image_back,1)
SetGadgetText(#Button_0,"Weiter geht's" )
ElseIf GadgetID = #Button_0 And GetGadgetText(#Button_0)="Weiter geht's"
HideGadget(#image_back,1)
SetGadgetText(#Button_0,"Wartmal")
HideGadget(#String_1,0)
HideGadget(#Combo_0,0)
HideGadget(#Button_1,0)
HideGadget(#Button_2,0)
HideGadget(#Button_3,0)
HideGadget(#Web_0,0)
HideWindow(#Window_0,1)
HideWindow(#Window_0,0)
ElseIf GadgetID = #Button_1
SetGadgetText(#Web_0,GetGadgetText(#Combo_0))
SetGadgetText(#String_1,GetGadgetText(#Combo_0))
ElseIf GadgetID = #Button_3
quit+1
EndIf
EndIf
Until Event = #PB_Event_CloseWindow Or quit
End