在UIImage中绘制点之间的线

时间:2011-06-03 14:54:17

标签: iphone uiscrollview uiimageview drawing uiimage

我有一个XML文件,如:

<PointCollection>
<Point x="2453.553575623344" y="1011.755461592671"/>
<Point x="2260.662874593102" y="1102.865398167724"/>
<Point x="2259.547233128629" y="1276.871740662439"/>
<Point x="2293.490150676198" y="1444.799859055673"/>
<Point x="2375.667740528206" y="1696.692036645525"/>
<Point x="2480.350615792477" y="1865.216215309236"/>
<Point x="2757.972180274506" y="1877.125440451022"/>
<Point x="2939.521225544476" y="1715.15279036209"/>
<Point x="3052.739622134972" y="1443.013389711065"/>
<Point x="2997.359072452096" y="1135.740662438337"/>
<Point x="2774.050404375987" y="1030.338971106413"/>
</PointCollection>

我需要在这些点之间绘制线条并在UIIMage上创建一个形状来注释该图像上的特定区域。例如,我将在Point x =“2453.553575623344”y =“1011.755461592671”和Point x之间画一条线=“2260.662874593102”y =“1102.865398167724”,根据图像的分辨率具有x和y坐标。我怎样才能做到这一点? 谢谢。

1 个答案:

答案 0 :(得分:4)

简而言之,你应该:

  • 计算出要在图像中显示的模型空间的大小。
  • 在绘图环境中,获取当前CGContextRef(iOS上的UIGraphicsGetCurrentContext())。
  • 通过操纵当前变换矩阵(CTM)来平移和缩放坐标系,以便您可以根据模型坐标而不是位图坐标进行绘制。更改绘图的坐标系统可让系统完成所有数学操作,使您的线条适合图像的实际位。
  • 然后,反复:
    • 使用CGPath / CGMutablePath来描述形状。
    • 设置笔触/填充颜色(或任何其他许多设置)。
    • 适当地描边/填充路径。

请注意,如果要绘制现有图像而不是创建全新图像,则可能需要在转换CTM之前在空白画布上绘制当前图像。

在您阅读使用CoreGraphics绘图之前,您可能不会理解这些内容。查看Quartz 2D Programming Guide以获得使用CoreGraphics绘制2D图像的良好调查。