如何填充图形以使线条不会被边缘剪切?

时间:2012-04-09 02:25:32

标签: objective-c macos cocoa core-graphics core-plot

我已经很好地了解了这个问题的答案,并在我的代码中尝试了几种解决方案,到目前为止还没有找到。

我有一个我正在绘制的线图,一个CPTScatterPlot图表,我有正确添加点数。我想将这些点中的每一个显示为直径约为3-5个像素的点,并通过约3个像素宽的线连接。一切正常。

问题在于,当绘图是图形托管视图的一个边缘的直线时,线条和点被剪裁,看起来根本不正确。

这是它应该是什么样子的样机:
This is what it should look like

这就是我现在大部分时间都看到的效果:
enter image description here

我为小图片道歉,但希望你能看到在第二个图像中,线条和点只在图表视图中呈现几个像素,而不是完全在视图中。在第二个数据中,前75%的数据实际上在y = 1,然后下降到y = 0.

如何将图形组件的绘制按几个像素插入以防止剪裁任何形状?

到目前为止:

  • 我已尝试在图表上设置填充,但仅此而已 合同它所吸引的区域,我想为标题腾出空间 我没有使用。

  • 我也尝试添加我的最小/最大x / y范围设置 根据我在后台更新的数据重新计算。这个 工作,但显然只有我添加到这些值的金额是 相对于将用于绘图比例的绘图比例是正确的 我输入的数据值。

  • 我在Mac OS上使用NSView(实际上是CPTGraphHostingView),因此clipsToBounds不可用。另外,我在CPTXYGraph上尝试了masksToBoundsmasksToBorder

2 个答案:

答案 0 :(得分:1)

我认为处理此问题最简单的方法是简单地扩展您的范围。 CPTPlotRange中有一种方法可以很容易地将给定范围扩展一个固定的百分比(例如1%)。我认为主要的测试应用程序示例甚至可以显示这一点。

另一种选择是在CPTPlotArea(plotArea)和可能的CPTPlotAreaFrame(plotAreaFrame)上关闭masksToBounds和/或masksToBorder。您可以通过图表的属性访问它们。

答案 1 :(得分:0)

这可能会有所帮助..

图表本身的默认填充(不是绘图区域框架)每边20像素。你也可以改变它。

graph.paddingLeft = 0.0;
graph.paddingTop = 0.0;
graph.paddingRight = 0.0;
graph.paddingBottom = 0.0;