有没有一种方法可以在.NET Core上绘制和显示图形?我想创建一个可以在多个平台上运行的图形应用程序。
你可以使用OpenGL在.NET Core中绘制图形,但这似乎有点繁琐,如果你只想使用C#而不是.NET Core,也许Unity是一个更好的选择Unity。
如果您正在尝试制作带有GUI元素的“桌面应用程序”,您还可以尝试使用Electron与TypeScript(类似于C#),例如Visual Studio Code就是这样制作的。
编辑:我刚刚发现了另一篇非常有趣的文章(由我在评论中提到的同一个人编写)使用.NET Core构建3D游戏引擎,我相信你可以从中获得一些灵感,了解如何使用OpenTK、Veldrid和ImGui.NET进行屏幕绘制。
另一个支持基本2D图形和监听窗口事件(如输入)的库是SFML,它有C#绑定形式的SFML.Net。
只需启动新的NET Core控制台应用程序并将SFML.Net NuGet包添加到项目中。
然后使用以下代码替换程序的主体:
using SFML.Graphics;
using SFML.Window;
using System;
class Program
{
static void Main(string[] args)
{
RenderWindow window = new RenderWindow(new VideoMode(640, 480), "This is a new window");
CircleShape cs = new CircleShape(100.0f);
cs.FillColor = Color.Green;
window.SetActive();
window.Closed += new EventHandler(OnClose);
while (window.IsOpen)
{
window.Clear();
window.DispatchEvents();
window.Draw(cs);
window.Display();
}
}
static void OnClose(object sender, EventArgs e)
{
RenderWindow window = (RenderWindow)sender;
window.Close();
}
}
using System;
using OpenTK;
using OpenTK.Graphics.OpenGL;
namespace dotnet_opentk
{
class Program
{
static void Main(string[] args)
{
using (var window = new Window())
{
window.Run();
}
}
}
class Window : GameWindow
{
protected override void OnLoad(System.EventArgs e)
{
GL.ClearColor(0.1f, 0.2f, 0.3f, 1f);
Console.WriteLine(GL.GetString(StringName.Version));
}
protected override void OnRenderFrame(FrameEventArgs e)
{
GL.Clear(ClearBufferMask.ColorBufferBit);
SwapBuffers();
}
}
}