如何在c#中设置System.Windows.window的背景

本文关键字:Windows window 背景 System 设置 | 更新日期: 2023-09-27 18:04:19

所以,我正在做一个项目,让我创建一个UI。有一个Win-form应用程序,它可以让你设计一个类似于Visual Studio Win Forms的表单,但它更自定义。

在模拟表单时,将启动System.Windows.window,但它没有任何背景。如何为整个窗口设置背景?当我在制作UI时,我可以在表单中设置背景,但是当它作为窗口运行时,没有背景。

private void emulateToolStripMenuItem_Click(object sender, EventArgs e)
    {
        if (this.tabControl1.TabCount <= 0)
        {
            MessageBox.Show("Design a UI first");
            return;
        }

        List<String> tempForms = new List<String>();
        //Emulator_Window is System.Windows.window type
        Emulator_Window wpfwindow = new Emulator_Window();
        ElementHost.EnableModelessKeyboardInterop(wpfwindow);
        foreach (TabPage t in tabControl1.TabPages)
        {
            System.Windows.Forms.UserControl p1 = (System.Windows.Forms.UserControl)GetDesignSurface(t);
            tempForms.Add(t.Text);
            System.Windows.Forms.UserControl bkp = p1;
            p1.Scale(new SizeF(1.0f / CurrentSF, 1.0f / CurrentSF));
            List<UIControl_Prop> tempProps = new List<UIControl_Prop>();
            foreach (System.Windows.Forms.Control c in GetControls(p1))
            {
                tempProps.Add(ExtractProperties((BaseControl)c, t.Text));
            }
            //p1.Scale(new SizeF(CurrentSF, CurrentSF));
            wpfwindow.MainDict.Add(t.Text, new Emulator_Window.UIPropList(tempProps));
            wpfwindow.LandDict.Add(t.Text, p1.Height < p1.Width ? true : false);
        }
        //wpfwindow.FontPaths = UIFontManager.GetFontPaths();
        List<String> temp_fontURI_list = UIFontManager.GetFontPaths();
        List<String> fontURI_list = new List<String>();
        int i = 0;
        foreach (String path in temp_fontURI_list)
        {
            String tempString = Path.GetFullPath(path);
            int offset = tempString.LastIndexOf("''");
            tempString = tempString.Remove(offset);
            tempString += "''#"+UIFontManager.GetFamilyNames()[i];
            fontURI_list.Add(tempString);
            i++;
        }
        wpfwindow.FontPaths = fontURI_list;
        wpfwindow.mForms = tempForms;
        wpfwindow.DeviceDict = this.deviceList;
        wpfwindow.CurrentDevice = this.CurrentDevice;
        ChangeScalingFactor(1.0f);
        wpfwindow.ShowDialog();
    }

如何在c#中设置System.Windows.window的背景

从我看到的Emulator_Window是一个WPF窗口。您可以在WinForms应用程序中使用它,但它仍然是一个WPF窗口。甚至变量的名称都表明。

知道我们使用WPF,设置背景是很容易的。例如,以下代码使用图片作为背景:

wpfwindow.Background = new ImageBrush(new BitmapImage(new Uri(pathToThePicture)));

下面是另一个用纯蓝色填充窗口的例子:

wpfwindow.Background = new SolidColorBrush(System.Windows.Media.Colors.Blue);