有 3 种方法可以做到这一点:
1.) 完全使用 WPF,然后在您的 WPF 应用程序中引用 WinForms .NET 库,如果您想要 WinForms 特定的东西
2.) 创建一个新的 WPF 库(一个可以在您的代码中引用的 .NET dll),其中包含您想要的所有 WPF 功能(如您的初始屏幕),然后创建一个新的 WinForms .NET 应用程序并引用 WPF WinForms 项目中的项目,然后从 WinForms 应用程序调用 WPF 库
3.) 根据您要完成的任务(例如特殊的图形窗口或其他“花哨”的 UI 内容),以及您愿意投入多少时间/精力,您可以学习 DirectX,或使用 'gdi32. dll' 并导入它的 GDI+ 功能。
编辑:
因此,这是在 WindowForm C# 应用程序中获取 WPF 启动画面的一步一步:
1.) 创建一个新的 C# Windows 窗体应用程序,随意调用它并将其保存在您想要的任何位置
2.) 文件->添加->新建项目
3.) 添加一个新的 C# WPF 用户控件库,将其命名为 SplashScreen 并确保注意它会尝试将其保存在相同的文件位置,因此如果要将其保存在其他位置,请务必选择不同的位置。
4.) 删除在 SplashScreen WPF 库中创建的默认“UserControl1.xaml”
5.) 右键单击 WPF 项目和“添加->窗口”,然后将其命名为 SplashScreen.xaml
6.) 将 SplashScreen.xaml 中的所有现有代码替换为以下内容:
<Window x:Class="SplashScreen.SplashScreen"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
WindowStyle="None" Background="Transparent" AllowsTransparency="True"
ShowInTaskbar="False" SizeToContent="WidthAndHeight"
Title="SplashScreen" WindowStartupLocation="CenterScreen">
<Image Source="logo.png" Stretch="None" />
</Window>
7.) 右键单击 WPF 项目和“添加->现有项目”,确保您的文件过滤器设置为“所有文件”并选择“logo.png”。
8.) 查看新导入的“logo.png”的属性并确保其“构建操作”设置为“资源”
9.) 在您的 Windows 窗体项目中,右键单击“添加”->“新建引用”,选择“项目”选项卡并选择您刚刚创建的“SplashScreen”WPF 项目。
10.) 在您的 Windows 窗体项目中,右键单击“添加”->“新建引用”,选择“.NET”选项卡并选择“PresentationFramework”、“PresentationCore”、“WindowsBase”和“System.Xaml”库。
11.) 在 Windows 窗体项目的“Program.cs”文件中,您现在可以执行以下操作:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace MyGame
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// Create a new 'splash screen instance
SplashScreen.SplashScreen ss = new SplashScreen.SplashScreen();
// Show it
ss.Visibility = System.Windows.Visibility.Visible;
// Forces the splash screen visible
Application.DoEvents();
// Here's where you'd your actual loading stuff, but this
// thread sleep is here to simulate 'loading'
System.Threading.Thread.Sleep(5000);
// Hide your splash screen
ss.Visibility = System.Windows.Visibility.Hidden;
// Start your main form, or whatever
Application.Run(new Form1());
}
}
}