Transparent dialog form background?

Hello!
Is it possible in Python and ETO to have a dialog form with a transparent background and no title bar?
I’m planning to write a quadrant menu system for Rhino, 3ds Max-style (I once did for Softimage, using .net forms).
If not, maybe it is in some other supported language, C#, C++?
Thanks!
Best regards
Eugen

import Rhino.UI
import Eto.Drawing as drawing
import Eto.Forms as forms

class EtoTransparentDialog(forms.Dialog[bool]):

    def __init__(self):
        self.Title = 'Transparency'
        self.ClientSize = drawing.Size(400, 200)
        self.Padding = drawing.Padding(10)
        self.Resizable = False
        self.WindowStyle = forms.WindowStyle.Default
        self.Opacity = .5

        self.m_checkbox = forms.CheckBox(Text = 'Default', Checked = True)
        self.m_checkbox.CheckedChanged += self.OnCheckBoxChanged
        self.m_slider = forms.Slider(MinValue = 10, MaxValue = 100, Value = 50)
        self.m_slider.ValueChanged += self.OnSliderChanged
        self.DefaultButton = forms.Button(Text = 'OK')
        self.DefaultButton.Click += self.OnOKButtonClick

        layout = forms.DynamicLayout()
        layout.Spacing = drawing.Size(5, 5)
        layout.AddRow(self.m_checkbox)
        layout.AddRow(self.m_slider)
        layout.AddRow(self.DefaultButton)
        self.Content = layout

    def OnSliderChanged(self, sender, e):
        self.Opacity = self.m_slider.Value * 0.01

    def OnOKButtonClick(self, sender, e):
        self.Close(False)

    def OnCheckBoxChanged(self, sender, e):
        if self.m_checkbox.Checked:
            self.WindowStyle = forms.WindowStyle.Default
        else:
            self.WindowStyle = forms.WindowStyle.None

dialog = EtoTransparentDialog();
rc = dialog.ShowModal(Rhino.UI.RhinoEtoApp.MainWindow)

EtoTransparent.py (1.5 KB)

3 Likes

My man, that was quick, thank you!!
With transparent I mean invisible. The containing form for these 4 pseudo-menus inside should not be visible.
Going to play with this soon…