Mono兼容应用程序的图形框架选择

时间:2010-05-11 10:13:42

标签: wpf silverlight mono gdi+

我有一个应用程序,它有一些使用GDI +的控件,大多数是具有低图形渲染要求的​​简单东西,尽管我有一些动画GDI +窗口,因为GDI +性能不佳而无法使用。[/ p>

继续前进我想开始使用WPF(用于性能和学习WPF),但我也希望保持代码与Mono兼容。因此我想知道我是否应该使用Silverlight(Mono中的Moonlight)开发。这样我获得了一些WPF技能(我承担了Silverlight是WPF的一个子集?)和良好的性能。

3 个答案:

答案 0 :(得分:2)

对于任何类型的图形和动画,Silverlight / Moonlight都是更好的选择。 GDI +是旧的,Mono实现主要是为了支持Winforms,这意味着它不会变得更好。 OTOH,虽然表面上都使用Cairo(正如之前的海报所提到的),这就像说两个渲染文本 - 是的,但是这几乎就是比较停止的地方。 Moonlight的目标是快速渲染,你可以获得矢量动画,你可以随时获得图形芯片的硬件支持,因为它真的需要快速,它需要支持具有实时渲染效果,2D和3D等的视频。可能是它尚未与最新的Silverlight版本相提并论,但这并不意味着它不能满足您的需求。如果你有选择的话,可以选择正在积极开展工作的新技术,而不是陈旧的技术。

答案 1 :(得分:1)

Silverlight确实是WPF的一个子集,尽管有一些细节的工作方式不同。 Moonlight目前与Silverlight 2.0兼容,但微软现在使用Silverlight 4.0。 Moonlight可能会远远落后于Silverlight,甚至落后于WPF。但如果你能忍受,月光可能是一个不错的选择。但是,如果您可能看不到任何性能提升,因为Mono使用Cairo渲染GDI +和Moonlight。 我还期望Mono的GDI +实现比Moonlight的低级渲染API更加成熟。

答案 2 :(得分:0)

使用System.Drawing提供的GDI +指令的C#代码目前在使用Mono的Linux上不兼容。

A null reference or invalid value was found [GDI+ status: InvalidParameter]

AFAIK没有人能够解决这个错误。