下图显示我的WPF行不像非WPF应用程序中的类似绘图那样精确。所以?问题出在哪儿?抗锯齿?或者这是WPF功能?我该怎么办?
下面的条形图是一个简单的Shape.Line。
答案 0 :(得分:3)
我不确定我会说“更好的线路质量”。子像素渲染在许多情况下是一个特征 - 实际上在大多数情况下。金融图表是一个特例 - 但是说WPF线路总体上很糟糕,实际上是过于简单化了。特别是因为它指出(正如一些人所指出的)通常缺乏阅读文档和学习技术,因为像素精确渲染在不久前被重新引入。
您遇到的主要问题是WPF与设备无关并允许任意缩放 - 所以一切都发生在它自己的坐标系中。这可能不会精确到像素。正如我所说 - 通常是一个特征。
现在有一些边缘情况(比如您指出的金融图表)以及.NET 3.0中的情况(很久以前,严重来说)可以使用像素捕捉。
http://msdn.microsoft.com/en-us/library/aa970908(v=vs.85).aspx
有一些解释。它基本上通过SnapsToDevicePixels
属性工作。
事实上,这不是第一次出现这个问题,可以在 - Rendering sharp lines in WPF看到。
WPF中有很多功能,阅读文档非常必要。特别是在金融应用程序中 - 如果您处理实时数据,则不是非常静态的。我建议你这样做 - 你可以通过例如在显卡内存中预先缓存部分UI来获得巨大的性能优势,这是一个简单的其他技巧,很容易做到。