0

为了绘制图表,我在基于 MonoTouch 的 iPhone 应用程序中使用了一段时间的coreplot 库,但在 iOS 6.0 中,已经很烦人的绑定问题变得如此之多,以至于我决定放弃它,转而使用原生用 C# 编写的库。

环顾四周,我发现了出色的OxyPlot 2D 库,更具体地说,是dvkwong制造的 MonoTouch 端口。

该库工作正常并且有大量有用的功能,但它的输出只是一个渲染的位图 UIImage。

这意味着我需要将捏合和缩放功能添加到库中。

当前的实现,基于 dvkwong 初步示例,使用 UIScrollView 来缩放和取消缩放添加到简单子视图的结果位图图像。

这不是一个好的解决方案,因为当缩放位图的锯齿是可见的,如果增加分辨率,文本字体变得不可读,因为没有针对当前缩放分辨率进行优化。

我需要每次以正确的分辨率渲染图像,而不使用 UIScrollView,而只是覆盖自定义 UIView 中的 DrawRect() 调用。

但是如何重现 Apple UIScrollView 的捏缩放手势并绘制 OxyPlot 绘图模型的正确子矩形?

我试图实现这里建议的这个方法:

将捏合视图定位在两根手指之间

但这不起作用,因为我需要知道要绘制的子矩形,而不是应用变换矩阵。OxyPlot 库中也没有“draw sub rect”方法,所以我需要在图像上下文中设置一个 cliprect 并先绘制一个更大的图像,然后再对其进行裁剪。这显然太慢了,因为在某些缩放级别上,图像可能会变得很大(并且我需要用户能够在图形的任何部分上无限缩放)。

任何帮助表示赞赏。提前致谢。

4

1 回答 1

0

我自己解决了这个问题。我创建了 OxyPlot 2D 库的另一个 MonoTouch 端口,这次支持 Pan 和 Pinch-Zoom 手势。我还添加了 iPad 支持。现在我们有了一个用于 MonoTouch 的原生 C# 绘图库。

您可以在此处根据 MIT 许可证下载它:

https://github.com/Emasoft/OxyPlot.2DGraphLib.MonoTouch

于 2013-01-29T12:00:57.767 回答