Re: Fensterhintergrund ein Bild (Image)
Verfasst: 22.10.2014 19:55
Ich habe ts-softs Beispiel um den Mac-spezifischen Teil ergänzt:

Ich möchte übrigens noch eine fehlende Quellenangabe von ts-softs Linux-Teil nachreichen, denn es stammt von mir...
http://www.purebasic.fr/english/viewtop ... 38&start=1
Zu Plattform-unabhängigen Beispielen mit jeweils betriebssystemspezifischen Funktionsaufrufen, die in PureBasic (noch) nicht implementiert sind, habe ich übrigens im englischen Forum eine Sammlung von Lösungen zusammengestellt:
http://www.purebasic.fr/english/viewtop ... 3&start=11
Für MacOS X hat wilbert im englischen Forum eine Lösungssammlung zusammengestellt:
http://www.purebasic.fr/english/viewtop ... 19&t=50795
Und für Linux kann ich nur einen Blick in Charly "Omi" Bauers Sammlung empfehlen:
http://www.chabba.de/ (unter Linux-PureBasic-API)
RSBasic hat in seinem Posting ja schon auf seine riesige WinAPI-Bibliothek für Windows hingewiesen:
http://www.rsbasic.de/winapi-library
Code: Alles auswählen
EnableExplicit
InitNetwork()
UseJPEGImageDecoder()
Procedure SetWindowBackgroundImage(hWnd.i, hImage.i)
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Linux
Protected *Background
Protected FixedBox.i
Protected *Style.GtkStyle
gdk_pixbuf_render_pixmap_and_mask_(hImage, @*Background, 0, 0)
*Style = gtk_style_new_()
*Style\bg_pixmap[0] = *Background
FixedBox = g_list_nth_data_(gtk_container_get_children_(gtk_bin_get_child_(hWnd)), 0)
gtk_widget_set_style_(FixedBox, *Style)
CompilerCase #PB_OS_Windows
Protected hBrush = CreatePatternBrush_(hImage)
If hBrush
SetClassLongPtr_(hWnd, #GCL_HBRBACKGROUND, hBrush)
InvalidateRect_(hWnd, 0, #True)
UpdateWindow_(hWnd)
EndIf
CompilerCase #PB_OS_MacOS
CocoaMessage(0, hWnd, "setBackgroundColor:",
CocoaMessage(0, 0, "NSColor colorWithPatternImage:", hImage))
CompilerEndSelect
EndProcedure
If ReceiveHTTPFile("http://realsource.de/images/stargate_atlantis.jpg", GetTemporaryDirectory() + "stargate_atlantis.jpg")
LoadImage(0, GetTemporaryDirectory() + "stargate_atlantis.jpg")
OpenWindow(0, #PB_Ignore, #PB_Ignore, 800, 450, "")
SetWindowBackgroundImage(WindowID(0), ImageID(0))
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf

Ich möchte übrigens noch eine fehlende Quellenangabe von ts-softs Linux-Teil nachreichen, denn es stammt von mir...

http://www.purebasic.fr/english/viewtop ... 38&start=1
Zu Plattform-unabhängigen Beispielen mit jeweils betriebssystemspezifischen Funktionsaufrufen, die in PureBasic (noch) nicht implementiert sind, habe ich übrigens im englischen Forum eine Sammlung von Lösungen zusammengestellt:
http://www.purebasic.fr/english/viewtop ... 3&start=11
Für MacOS X hat wilbert im englischen Forum eine Lösungssammlung zusammengestellt:
http://www.purebasic.fr/english/viewtop ... 19&t=50795
Und für Linux kann ich nur einen Blick in Charly "Omi" Bauers Sammlung empfehlen:
http://www.chabba.de/ (unter Linux-PureBasic-API)
RSBasic hat in seinem Posting ja schon auf seine riesige WinAPI-Bibliothek für Windows hingewiesen:
http://www.rsbasic.de/winapi-library