Hintergrundbild in Fenster realisieren
- blbltheworm
- Beiträge: 217
- Registriert: 22.09.2004 19:36
- Wohnort: Auf der schönen Schwäbischen Alb
Hintergrundbild in Fenster realisieren
Hallo zusammen,
ich hab ein Fenster auf dem sich mehrere Gadgets befinden und ich würde anstelle des Standardgraus im Hintergrund gerne ein Bild anzeigen.
Jedoch hab ich bis jetzt noch keine Möglichkeit gefunden.
Wenn ich ein Imagegadget verwende sind die anderen Gadgets so lange im Vordergrund, bis ich ein anderes Fenster darüber schiebe.
Dann verschwinden die Gadgets unter dem Imagegadget.
Wenn ich mit BitBlt die Grafik auf das Fenster bringe funktioniert das solange, bis ich wieder ein anderes Fenster darüberschiebe. Dann verschwindet aber die Hintergrundgrafik.
Wenn ich die ganze Zeit neu Blte werden jedoch meine Gadgets überzeichnet.
Wie kann ich das Problem also meistern??
ich hab ein Fenster auf dem sich mehrere Gadgets befinden und ich würde anstelle des Standardgraus im Hintergrund gerne ein Bild anzeigen.
Jedoch hab ich bis jetzt noch keine Möglichkeit gefunden.
Wenn ich ein Imagegadget verwende sind die anderen Gadgets so lange im Vordergrund, bis ich ein anderes Fenster darüber schiebe.
Dann verschwinden die Gadgets unter dem Imagegadget.
Wenn ich mit BitBlt die Grafik auf das Fenster bringe funktioniert das solange, bis ich wieder ein anderes Fenster darüberschiebe. Dann verschwindet aber die Hintergrundgrafik.
Wenn ich die ganze Zeit neu Blte werden jedoch meine Gadgets überzeichnet.
Wie kann ich das Problem also meistern??
mit Hidewindowtrickserei macht das TextGadget weniger Probleme
du kommsch von dr alb ra? isch des kähl !

Code: Alles auswählen
;PB4
Enumeration
#Window_0
#Image_0
#Button_0
#Button_1
#Button_2
#String_0
#Text_0
EndEnumeration
Image0=CreateImage(#PB_Any,600,300)
StartDrawing(ImageOutput(Image0))
Box(0,0,600,300,RGB(128,255,255))
Circle(50,50,50,RGB(255,0,0))
Circle(150,50,50,RGB(255,0,255))
StopDrawing()
If OpenWindow(#Window_0, 0, 0, 600, 300, "New window ( 0 )", #PB_Window_Invisible|#PB_Window_ScreenCentered| #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreateGadgetList(WindowID(#Window_0))
ImageGadget(#Image_0, 0, 0, 600,150, ImageID(Image0))
DisableGadget(#image_0,1)
ButtonGadget(#Button_0, 30, 220, 60, 30, "OK")
ButtonGadget(#Button_1, 110, 220, 60, 30, "KO")
ButtonGadget(#Button_2, 210, 220, 110, 30, "Kannst Mich Mal")
StringGadget(#String_0, 450, 80, 120, 40, "irgendwas")
TextGadget(#Text_0, 150, 80, 80, 40, "schnasel")
EndIf
EndIf
HideWindow(#Window_0,0)
Repeat ; Start of the event loop
Event = WaitWindowEvent() ; This line waits until an event is received from Windows
WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
GadgetID = EventGadget() ; Is it a gadget event?
EventType = EventType() ; The event type
Debug eventType
;You can place code here, and use the result as parameters for the procedures
If Event = #PB_Event_Gadget
If GadgetID = #Image_0
ElseIf GadgetID = #Button_0
SetGadgetText(#text_0,"OK was?")
ElseIf GadgetID = #Button_1
SetGadgetText(#text_0,"KO was?")
ElseIf GadgetID = #Button_2
SetGadgetText(#text_0,"Was denn?")
ElseIf GadgetID = #String_0
EndIf
EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
End
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
- vonTurnundTaxis
- Beiträge: 2130
- Registriert: 06.10.2004 20:38
- Wohnort: Bayreuth
- Kontaktdaten:
Einen Code, der bedauerlicherweise nur mit dem Betriebssystem Windows funktioniert, findest du hier:
http://www.purebasic.fr/german/viewtopi ... 54&start=0
http://www.purebasic.fr/german/viewtopi ... 54&start=0
Ich klink mich mal ein 
in dem von vonTurnundTaxis angegebenen Beitrag ist ja ein Beispielcode aufgeführt (hier mal auf PB 4.0 umgemünzt)...
Jetzt meine Fragen: Was ist das:
Brush.LOGBRUSH\lbStyle=#BS_PATTERN
Brush\lbColor=#DIB_RGB_COLORS
Brush\lbHatch=ImageID(1)
Es scheint mir eine Struktur für die API-CreateBrushIndirect Funktion zu sein (hab noch nie was mit API gemacht).
Aber woher kennt PB die Struktur? Muß man das nicht vorher mit Structure/EndStructure anlegen?
Und was macht das ".LOGBRUSH" in der ersten Zeile?
Fragen über Fragen...
Gruß Markus

in dem von vonTurnundTaxis angegebenen Beitrag ist ja ein Beispielcode aufgeführt (hier mal auf PB 4.0 umgemünzt)...
Code: Alles auswählen
Procedure.l Window_Form1()
If OpenWindow(0,149,202,400,300, "...", #PB_Window_SystemMenu)
Brush.LOGBRUSH\lbStyle=#BS_PATTERN
Brush\lbColor=#DIB_RGB_COLORS
Brush\lbHatch=ImageID(1)
SetClassLong_(WindowID(0),#GCL_HBRBACKGROUND,CreateBrushIndirect_(Brush))
InvalidateRect_(WindowID(0), #Null, #True)
If CreateGadgetList(WindowID(0))
ProcedureReturn WindowID(0)
EndIf
EndIf
EndProcedure
LoadImage(1,"hintergrund.bmp")
If Window_Form1()
Repeat
event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow
EndIf
Brush.LOGBRUSH\lbStyle=#BS_PATTERN
Brush\lbColor=#DIB_RGB_COLORS
Brush\lbHatch=ImageID(1)
Es scheint mir eine Struktur für die API-CreateBrushIndirect Funktion zu sein (hab noch nie was mit API gemacht).
Aber woher kennt PB die Struktur? Muß man das nicht vorher mit Structure/EndStructure anlegen?
Und was macht das ".LOGBRUSH" in der ersten Zeile?
Fragen über Fragen...

Gruß Markus
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Hm, gibt es irgendwo eine Übersicht was von dem API-Zeug bereits vordefiniert ist?
Gruß Markus
Gruß Markus
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
- blbltheworm
- Beiträge: 217
- Registriert: 22.09.2004 19:36
- Wohnort: Auf der schönen Schwäbischen Alb
@Kurzer,
mmm, eigendlich fast alles. Wenn etwas fehlt, dann gleich bescheid sagen damit es nachgepflegt werden kann.
mmm, eigendlich fast alles. Wenn etwas fehlt, dann gleich bescheid sagen damit es nachgepflegt werden kann.

Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive