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

时间:2014-05-21 11:11:06

标签: c# winforms

所以,我正在开发一个让我创建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();

    }

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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