Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何绘制 ;使用.NET ;核心?_C#_.net_Graphics_Drawing_.net Core - Fatal编程技术网

C# 如何绘制 ;使用.NET ;核心?

C# 如何绘制 ;使用.NET ;核心?,c#,.net,graphics,drawing,.net-core,C#,.net,Graphics,Drawing,.net Core,有没有办法用.NET内核在屏幕上绘制和显示图形?我想创建一个在多个平台上运行的图形应用程序。您可以使用.NET Core绘制图形,但如果您只是致力于使用C#而不是.NET Core,这似乎有点麻烦,可能是一个更好的选择 如果您试图用GUI元素创建一个“桌面应用程序”,您也可以研究它与GUI元素的组合(这有点类似于C#),例如,他们就是这样创建Visual Studio代码的 编辑:我刚刚发现另一篇非常有趣的文章(由我在评论中提到的同一个人写的),名为《如何使用OpenTK、Veldrid和ImG

有没有办法用.NET内核在屏幕上绘制和显示图形?我想创建一个在多个平台上运行的图形应用程序。

您可以使用.NET Core绘制图形,但如果您只是致力于使用C#而不是.NET Core,这似乎有点麻烦,可能是一个更好的选择

如果您试图用GUI元素创建一个“桌面应用程序”,您也可以研究它与GUI元素的组合(这有点类似于C#),例如,他们就是这样创建Visual Studio代码的

编辑:我刚刚发现另一篇非常有趣的文章(由我在评论中提到的同一个人写的),名为《如何使用OpenTK、Veldrid和ImGui.NET在屏幕上绘图》,我相信你可以从中获得一些灵感。

你可以使用

说明:如何为OpenGL图形创建第一个窗口

  • dotnet新控制台
  • dotnet添加包OpenTK.NetStandard
  • 网络运行

另一个支持基本2D图形并监听窗口事件(如输入)的库是SFML,它以

只需启动一个新的NetCore控制台应用程序,并将SFML.NETNuGet包添加到项目中

然后用以下代码替换程序主体:

使用SFML.Graphics;
使用SFML.Window;
使用制度;
班级计划
{
静态void Main(字符串[]参数)
{
RenderWindow=new RenderWindow(新视频模式(640480),“这是一个新窗口”);
圆形cs=新圆形(100.0f);
cs.FillColor=Color.Green;
SetActive();
window.Closed+=新的EventHandler(OnClose);
while(window.IsOpen)
{
window.Clear();
window.DispatchEvents();
窗口绘制(cs);
window.Display();
}
}
静态void OnClose(对象发送方、事件参数)
{
RenderWindow=(RenderWindow)发送方;
window.Close();
}
}
这将为您提供一个带有绿色圆圈的窗口。关闭图形窗口时,应用程序将关闭


希望这将帮助你开始

也许你可以去看看,在那里找到一些你可能感兴趣的答案。好吧,我知道没有任何东西是真正跨平台的,可以使用.NET Core在屏幕上绘制的,所以我们必须依赖一组特定于平台的“平台调用”,对吧?在图形操作方面,我不是一个真正的专业人士,但在文章的最后,我在我的回答中提到了作者,从快速浏览中,他有4个非常有趣的项目,都以一种更抽象的方式进行.NET核心图形处理(ImGui.NET、vk、veldrid、ge),他还贡献了一种叫做Avalonia的东西,你也可以查看,但我还没有弄清楚这是否在.NET核心编辑上运行:还可以看看OpenTK Avalonia吗?我也在和它合作!我来看看@SuperJMN我刚刚做了一个编辑,因为我发现了另一篇有趣的文章,所以也许还可以研究一下,不管您选择什么最终呈现,尝试以清晰的层边界逻辑地编写代码,如果您需要更改并且不需要花费太多时间,这将对您有所帮助。例如,您的自定义方法DrawSphere(…)将给出绘制球体的逻辑指令。对于您选择的库,只有此方法下面的代码是特定于图形的,而上面的代码是完全符合逻辑的。
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();
        }
    }
}