一个好的2D图形框架,适用于绘图应用程序是什么?

8

我正在尝试使用C#构建栅格绘图应用程序,但是到目前为止,我还没有找到任何多才多艺的轻量级2D图形框架或指南。

我希望你们中的一些人能够给我一个良好的起点,因为目前我的选择只有使用GDI+或WPF,这就是全部了:(...

基本上,我需要一个简单的东西,可以提供给我创建画布、图层、画笔以及导入/导出所有这些内容的能力。我查看了几个图形应用程序,看看它们如何实现其工具,并在网上寻找书籍,但没有任何关于从哪里开始的知识。

谢谢, 安德鲁


我看到你更新了这个。你有机会看一下SDL.Net吗?你还在寻找其他功能吗?至于你之前提到的闪烁问题,我已经进行了最大帧速率模拟可视化,并没有进行任何篡改就使其正常运行。 - Chris Pitman
6个回答

7

您没有提到您是想做矢量编辑器还是光栅编辑器。我假设是光栅。

如果您没有太多图形API经验,只是想尽快让一些东西工作起来,那就使用GDI+。它在概念上比WPF简单得多。

GDI+和WPF都能做到您想要的。使用WPF可能会提供更好的性能,因为它使用Direct-X进行加速。它还使用了存储场景范例,这可能使得许多绘图操作在概念上更简单。但是,学习曲线比GDI+高得多。

您始终可以使用Open-GL、Direct-X或非托管GDI。它们都具有良好的2D性能。但您将不得不调用非托管代码。


谢谢,我确实是指栅格图像,已经更新了我的帖子。我还有些时间来处理这件事,在我开始之前进行研究。我以前用过GDI+,但不得不大量修改它才能消除闪烁和麻烦,所以我担心在其基础上制作图形应用程序。 - Andrew
好吧,我猜WPF或非托管GDI是我的唯二选择,谢谢 :) - Andrew

5

两个建议。

首先,您可以查看Paint.Net。 这是一个免费的.Net程序,用于处理2D图形。 使用插件模型,您可能更容易地解决正在处理的任何问题。

其次,一个好的2D图形库是SDL.Net。 它是C SDL库的OO封装集,并且使得绘制2D图像变得非常容易。 不过我不知道它是否会提供支持您所有更多的“操纵”问题。


2

Piccolo 2D 是一个Java和C#的二维图形框架,免费且开源。它提供了场景图等功能,支持缩放,外观美观。


我在Java项目中成功地使用了Piccolo。自2005年以来,.NET版本没有更新,因此我正在寻找类似的东西来嵌入WPF应用程序中。 - Emile

2

如果你想学习2D图形,WinForms比WPF更容易学习。WinForms支持画笔、画布、多种图形格式、文件导入/导出等。

Code Project网站有许多WinForms图形教程,请从这里开始学起。


在此答案发布后的这些年里,我改变了自己的意见,现在推荐使用WPF。WinForms已经走到了尽头。 - Dour High Arch

1

XNA框架易于使用且性能良好,因为它实际上只是DirectX的包装器。最大的优势是您可以在托管的C#中编写所有代码。请查看xna论坛上的this post,了解如何读取显示以进行导出。


1

还有Tao框架,它允许您使用OpenGL或SDL来满足您的绘图需求。它也是每个包装器的OO集合。在Google上有很多入门教程。

Tao Framework


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接