alternetsoft / AlternetUI

MIT License
26 stars 2 forks source link

Seems background bruch does not work on panel. #141

Closed Shadowblitz16 closed 5 days ago

Shadowblitz16 commented 1 week ago

The background of the main panel should be Black but its not. image

I also tried enabling UserPaint for the panel Here is the code..

public class EditorForm : Window
{
    public EditorForm()
    {
        Title  = "New SMBX Editor";
        Width  = 800;
        Height = 600;

        var menu = new MainMenu();
        var fileMenu = new MenuItem("_File");
        var editMenu = new MenuItem("_Edit");
        var toolMenu = new MenuItem("_Tools");
        var HelpMenu = new MenuItem("_Help");

        Menu     = BuildMenu();
        Children.Add(BuildCanvas());

    }

    private StackPanel BuildChildren()
    {
        var panel = new StackPanel();
        panel.VerticalAlignment = VerticalAlignment.Fill;
        panel.Orientation = StackPanelOrientation.Vertical;

        var canvas = BuildCanvas();
        canvas.Parent = panel;
        panel.Children.Add(BuildToolBar());

        return panel;
    }

    private Control BuildCanvas()
    {
        var canvas = new Panel();
        canvas.VerticalAlignment = VerticalAlignment.Fill;
        canvas.Background = Brushes.Black;
        canvas.MinHeight = 300;
        canvas.MinWidth = 300;

        return canvas;
    }
    private StackPanel BuildToolBar()
    {
        var panel = new StackPanel();
        panel.VerticalAlignment = VerticalAlignment.Bottom;
        panel.Orientation = StackPanelOrientation.Horizontal;
        panel.Children.Add(new Button("Select"));
        panel.Children.Add(new Button("Eraser"));
        panel.Children.Add(new Button("Blocks"));
        panel.Children.Add(new Button("Scenery"));
        panel.Children.Add(new Button("Npcs"));
        panel.Children.Add(new Button("Warps"));
        panel.Children.Add(new Button("Liquids"));
        panel.Children.Add(new Button("Players"));
        panel.Children.Add(new Button("Hud"));
        panel.Children.Add(new Button("Settings"));

        return panel;
    }

    private Menu BuildMenu()
    {
        var menu = new MainMenu();
        menu.Items.Add(BuildFileMenu());
        menu.Items.Add(BuildEditMenu());
        menu.Items.Add(BuildToolMenu());
        menu.Items.Add(BuildHelpMenu());
        return menu;
    }

    private MenuItem BuildFileMenu()
    {
        var menu = new MenuItem("_File");
        menu.Items.Add(new MenuItem("New"));
        menu.Items.Add(new MenuItem("-"));
        menu.Items.Add(new MenuItem("Open"));
        menu.Items.Add(new MenuItem("-"));
        menu.Items.Add(new MenuItem("Save"));
        menu.Items.Add(new MenuItem("SaveAs"));
        menu.Items.Add(new MenuItem("-"));
        menu.Items.Add(new MenuItem("Exit"));

        return menu;
    }
    private MenuItem BuildEditMenu()
    {
        var menu = new MenuItem("_Edit");
        menu.Items.Add(new MenuItem("Undo"));
        menu.Items.Add(new MenuItem("Redo"));
        menu.Items.Add(new MenuItem("-"));
        menu.Items.Add(new MenuItem("Cut"));
        menu.Items.Add(new MenuItem("Copy"));
        menu.Items.Add(new MenuItem("Paste"));
        menu.Items.Add(new MenuItem("Delete"));
        menu.Items.Add(new MenuItem("-"));
        menu.Items.Add(new MenuItem("Select All"));
        return menu;
    }
    private MenuItem BuildToolMenu()
    {
        var menu = new MenuItem("_Tools");
        menu.Items.Add(new MenuItem("Graphics"));
        menu.Items.Add(new MenuItem("Sounds"));
        menu.Items.Add(new MenuItem("Music"));
        menu.Items.Add(new MenuItem("-"));
        menu.Items.Add(new MenuItem("Select"));
        menu.Items.Add(new MenuItem("Eraser"));
        menu.Items.Add(new MenuItem("-"));
        menu.Items.Add(new MenuItem("Blocks"));
        menu.Items.Add(new MenuItem("Scenery"));
        menu.Items.Add(new MenuItem("Npcs"));
        menu.Items.Add(new MenuItem("Warps"));
        menu.Items.Add(new MenuItem("Liquids"));
        menu.Items.Add(new MenuItem("Players"));
        menu.Items.Add(new MenuItem("Hud"));
        menu.Items.Add(new MenuItem("-"));
        menu.Items.Add(new MenuItem("Settings"));
        return menu;

    }
    private MenuItem BuildHelpMenu()
    {
        var menu = new MenuItem("_Help");
        menu.Items.Add(new MenuItem("About"));
        return menu;

    }
}
generalloki commented 1 week ago

I beleive this is not a bug. Use UserControl instead of a Panel in order to paint background or do custom painting. If you need only color, you can use BackgroundColor even in a Panel. But for more complex situations use UserControl.

Shadowblitz16 commented 1 week ago

@generalloki I am using the Background property. I am assigning it to Brushes.Black

EDIT: Using UserControl instead of panel does not change anything

generalloki commented 1 week ago

Correction: Use PictureBox or Border controls. Each of them paints Background if it is assigned.

Shadowblitz16 commented 1 week ago

Correction: Use PictureBox or Border controls. Each of them paints Background if it is assigned.

Why is there a background property on other controls then? Idk about wx widgets but WinForms allows assigning a Background color to all controls.

generalloki commented 1 week ago

WxWidgets doesn't support background brushes, it only allows background color. Background property added to the Control for a reason but currently it is only used in PictureBox and Border. I will update xml documentation in order to reflect current situation.

generalloki commented 5 days ago

I am moving this to discussions.