2010-05-11 94 views
0

我有一个应用程序具有一些使用GDI +的控件,大多数简单的东西具有低图形渲染要求,虽然我确实有一些动画GDI +窗口由于GDI +性能不佳而可用。前进我想开始使用WPF(用于性能和学习WPF),但我也想保持代码与Mono兼容。因此,我想知道是否应该或可以开发使用Silverlight(Mono中的Moonlight)。这样我得到一些WPF技能(我承认Silverlight是WPF的一个子集?)和良好的性能。Mono兼容应用程序的图形框架选择

+1

你期待我们回答什么?你似乎知道你想做什么! – lexu 2010-05-11 10:30:43

回答

1

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

2

对于任何类型的图形和动画,Silverlight/Moonlight是一个更好的选择。 GDI +比较陈旧,Mono的实现主要是为了支持Winforms,这意味着它不会变得更好。 OTOH,虽然表面上都使用开罗(就像之前的海报中提到的那样),这就好像在说两种渲染文本 - 是的,但是这就是比较停止的地方。月光是快速渲染的目标,你可以获得矢量动画,你可以尽可能为图形芯片提供硬件支持,因为它确实需要快速,它需要支持具有实时渲染效果,2D和3D等的视频。可能是这样的它还没有达到最新的Silverlight版本的水平,但这并不意味着它不会做你已经需要的东西。如果你有选择的话,那么你可以选择正在积极开展工作的新技术,而不是陈旧的技术。

0

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

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

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

+0

你是什么意思?我有使用System.Drawing编译为VS 4上的.NET 4的C#代码,并且它在Mono中完美运行。 – 2011-12-31 13:52:18

+0

嗡嗡声,你的意思是你从源代码编译的System.Drawing? – 2012-01-01 18:59:28

+0

不,我的意思是我的代码是在VS 2010下为.NET 4编译的,它使用System.Drawing命名空间来绘制用户控件。 – 2012-01-01 19:28:38