"transparentes" Label über Panel mit Hintergrund z
Übersicht

ArneBetreff: "transparentes" Label über Panel mit Hintergrund z |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi,
Ist es möglich einen Text über ein Panel mit Hintergrundbild zu schreiben? Bei mir ist dort, wo das Label ist kein Bild mehr zu erkennen. Einen Befehl, um das Label abgesehen vom Text transparent zu machen habe ich nicht gefunden. Sieht also in etwa so aus: Code: [AUSKLAPPEN] SuperStrict Local window:TGadget = CreateWindow("Test", 50, 50, 400, 400) Local panel:TGadget = CreatePanel(10, 10, 300, 300, window) SetPanelColor(panel, 255, 255, 255) Local label:TGadget = CreateLabel("Label", 50, 50, 100, 18, panel) While True WaitEvent Select EventID() Case EVENT_WINDOWCLOSE End End Select Wend Kann man da wohl was machen? lg |
||
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mit MaxGUI selbst geht das nicht. Da musst entweder die WinAPI benutzen oder gleich das Modul ändern. | ||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
Arne |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mit WinAPI kenne ich mich leider nicht aus und wie ich ein Modul umschreibe weiss ich auch nicht. Gibts eine alternative Lösung für das Problem? Ich werde es sonst mal mit einem Canvas probieren. | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein es gibt keine Lösung dafür
Und inwiefern das Canvas eine Lösung sind sehe ich gerade nicht, da Canvas und drüber normale Gadgets nur Probleme bringt, keine Freude. (und umgekehrt machts noch weniger sinn weil Canvas = 3D Rendering) Das einzige was du machen kannst ist total auf MaxGUI verzichten und zum Beispiel HighGUI3 zu nutzen und direkt alles im Grafikfenster machen |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dreamora hat Folgendes geschrieben: Nein es gibt keine Lösung dafür
Stimmt nicht! Hier ein Beispiel: Das Programm verarbeitet die WM_PAINT-Message und zeichnet den Text mit transparentem Hintergrund. Funktioniert im Moment nur mit die Default-Schriftart, sollte aber fürs erste reichen. Code: [AUSKLAPPEN] Framework brl.win32maxgui
Import brl.eventqueue Import pub.win32 SuperStrict ' GUI erstellen Local win:TGadget = CreateWindow( "Testfenster", 100, 100, 400, 300, Null, WINDOW_CLIENTCOORDS | WINDOW_TITLEBAR | WINDOW_HIDDEN ) Local panel:TGadget = CreatePanel( 50, 50, 200, 150, win ) SetPanelColor( panel, 255, 0, 0 ) Local label:TGadget = CreateLabel( "Testlabel", 50, 50, 100, 15, panel ) ' Label transparent machen MakeLabelTransparent( label ) ShowGadget( win ) ' Hauptschleife While True WaitEvent Select EventID( ) Case EVENT_WINDOWCLOSE End End Select Wend ' Funktionen Function MakeLabelTransparent:Int( label:TGadget ) ?win32 If label = Null Return 0 Local hwnd:Int = QueryGadget( label, QUERY_HWND ) Local hwnd_parent:Int = GetParent_( hwnd ) SetWindowLongA( hwnd_parent, GWL_STYLE, GetWindowLongA( hwnd, GWL_STYLE ) & ~WS_CLIPCHILDREN ) SetWindowProc( hwnd, GWL_WNDPROC, LabelProc ) ? Return 1 End Function ' WinAPI ?win32 Extern "win32" Function SetWindowProc:Int( hwnd:Int, longtype:Int, newlong:Int( hwnd:Int, msg:Int, wparam:Int, lparam:Int ) ) = "SetWindowLongA@12" Function SetBkMode:Int( hdc:Int, mode:Int ) Function TextOutA:Int( hdc:Int, x:Int, y:Int, text:Byte Ptr, length:Int ) Function GetWindowTextA:Int( hwnd:Int, text:Byte Ptr, length:Int ) End Extern Function LabelProc:Int( hwnd:Int, msg:Int, wparam:Int, lparam:Int ) Local hdc:Int Local text:Byte Ptr = MemAlloc( 1024 ) Local length:Int Select( msg ) Case WM_PAINT hdc = GetDC( hwnd ) SetBkMode( hdc, 1 ) SelectObject( hdc, GetStockObject( 17 ) ) length = GetWindowTextA( hwnd, text, 1024 ) TextOutA( hdc, 0, 0, text, length ) End Select MemFree( text ) Return DefWindowProcA( hwnd, msg, wparam, lparam ) End Function ? |
||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group