像這樣的東西可以工作,如果你用CGPoint填充'點'。警告:這是一個快速剪切,粘貼和編輯工作 - 所以可能會有錯誤。另外,我使用stl :: vector作爲'points'。您可能想要使用其他結構。
CGContextRef context = UIGraphicsGetCurrentContext();
CGMutablePathRef dataPath = CGPathCreateMutable();
bool firstPoint = YES;
for (int i=0; i < points.size(); ++i)
{
CGPoint point = points[i];
if (firstPoint)
{
CGPathMoveToPoint(dataPath, NULL, point.x, point.y);
firstPoint = NO;
}
else
{
CGPathAddLineToPoint(dataPath, NULL, point.x, point.y);
}
}
CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0);
CGContextSetLineWidth(context, 5);
CGContextBeginPath(context);
CGContextAddPath(context, dataPath);
CGContextDrawPath(context, kCGPathStroke);
CGPathRelease(dataPath);
很酷!那麼這是在'UIView?'的'-drawRect'方法嗎?另外,我不熟悉'stl :: vector' - 是某種結構嗎? – Steve 2010-10-28 03:31:37
是的,沒錯。這將在-drawRect中:.至於stl :: vector <>,它是標準模板庫的一部分,它是C++的一部分。將它包含在Obj-C中會增加更多的設置方面的問題(主要是將.m更改爲.mm並添加一些#include行),但好處很大。例如,stl :: vector <>爲您提供了可變數組,但是它的級別較低,開銷(開銷)要比NSMutableArray少得多(它只能包含NSObject)。 – westsider 2010-10-28 03:50:31
謝謝,@ westsider - 我還沒有完成,但我正在路上。我現在正在使用'CGPoints'的常規C數組。在這一點上,「stl」的東西離我的舒適區太遠了。我可能會嘗試'CFMutableArray' - 我認爲它可以採用'CGPoints',並免費橋接到'NSMutableArray.' – Steve 2010-10-29 02:58:09