如何在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();
}
从我看到的Emulator_Window是一个WPF窗口。您可以在WinForms应用程序中使用它,但它仍然是一个WPF窗口。甚至变量的名称都表明。
知道我们使用WPF,设置背景是很容易的。例如,以下代码使用图片作为背景:
wpfwindow.Background = new ImageBrush(new BitmapImage(new Uri(pathToThePicture)));
下面是另一个用纯蓝色填充窗口的例子:
wpfwindow.Background = new SolidColorBrush(System.Windows.Media.Colors.Blue);