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