【问题标题】:clip the image to the border of the bar chart bars in Core Plot CPTBarPlot将图像剪辑到Core Plot CPT BarPlot中条形图条的边界
【发布时间】:2014-05-22 10:01:08
【问题描述】:

在我的代码中,使用 CPTPlotSpaceAnotaions 代替数据标签的代码图像在条形图的每个条形图的中心显示。图像放置在中心并且工作正常,但如果图像被放大,它会被拉伸到条形之外。我需要它来切断条宽。

图像是使用绘制的,

CPTBorderedLayer *borderedLayerObject =[[CPTBorderedLayer alloc] initWithFrame:CGRectMake(0, 0, 52, 52)];
borderedLayerObject.fill = [CPTFill fillWithImage:cptimage];

NSArray *anchorPoint = [NSArray arrayWithObjects:xPosition, yPosition, nil];
CPTPlotSpaceAnnotation *imageAnnotation = [[CPTPlotSpaceAnnotation alloc]initWithPlotSpace:graph.defaultPlotSpace anchorPlotPoint:anchorPoint];
imageAnnotation.contentLayer = borderedLayerObject;
[graph.plotAreaFrame addAnnotation:imageAnnotation];
return imageAnnotation;

并将这个borderedLayerObject设置为CPTPlotSpaceAnnotation的contentLayer,返回CPTPlotSpaceAnnotation对象...

我绘制的图像采用borderedLayerObject 的帧大小并将其放置在条形图中的条上,所以我无法理解如何裁剪我绘制的图像......

CPTPlotSpaceAnnotation 用于因为我需要在条形图的中心显示图像,使用锚点我已经给出了图像必须显示在条形图的条形图中的 x 和 y 位置。请帮我解决...

【问题讨论】:

    标签: ios core-plot bar-chart


    【解决方案1】:

    很容易确定条的宽度。如果barWidthsAreInViewCoordinatesYES,则宽度由barWidth 属性给出。否则,您必须使用绘图空间将数据坐标转换为像素。沿垂直于条形的轴(例如,垂直条的 x 轴)选择两个相隔 barWidth 单位的点,将它们都转换为具有绘图空间的视图坐标,并从转换后的点中找到宽度.

    【讨论】:

    • 在我的代码中 barWidthAreInViewCoordinate 是 NO,但是我使用 barWidth 属性来设置条形宽度。这里我如何选择条形宽度的两个点?请帮我了解一下...
    • 如果条宽是问题,如果我将条宽设置为图像大小,原始图像大小不会受到影响吗???我实际上需要在条内显示其原始大小的图像,这些图像不会向外伸展,并且图像必须与条形边框一起被裁剪......
    • 例如,如果您有竖线,则转换 (0, 0) 和 (barWidth, 0) 以查看坐标。转换点的 x 坐标差异为您提供以像素为单位的宽度 (@1x)。使用它来确定注释的大小。如何裁剪图像取决于您的显示方式,最好在单独的问题中提出。
    • 我已经编辑了我的问题,希望你能更好地理解我的问题....谢谢您的支持
    • 使用条形宽度设置borderedLayerObject的宽度。如果条形宽度大于图像的自然尺寸,则使用图像的宽度,否则使用条形宽度。在填充图像 (cptimage) 上设置 tiled = YES,使其不会拉伸以填充注释层。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    相关资源
    最近更新 更多