1

次のように、一連のベジエパスを介して作成した特別な楕円を描いているアプリがあります。

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);

CGMutablePathRef pPath_0 = CGPathCreateMutable();
CGPathMoveToPoint(pPath_0, NULL, 515.98,258.24);
CGPathAddCurveToPoint(pPath_0, NULL, 515.98,435.61,415.54,515.98,258.24,515.98);
CGPathAddCurveToPoint(pPath_0, NULL, 100.94,515.98,0.50,435.61,0.50,258.24);
CGPathAddCurveToPoint(pPath_0, NULL, 0.50,80.86,100.94,0.50,258.24,0.50);
CGPathAddCurveToPoint(pPath_0, NULL, 415.54,0.50,515.98,80.86,515.98,258.24);
CGPathCloseSubpath(pPath_0);
CGContextSetRGBFillColor(context, 1.0000, 1.0000, 1.0000, 1.0000);

CGContextSetRGBStrokeColor(context,0.0000,0.0000,0.0000,1.0000);
CGContextSetLineWidth(context, 1);
CGContextSetMiterLimit(context, 10.0000);

CGContextAddPath(context, pPath_0);
CGContextDrawPath(context, kCGPathFillStroke);
CGPathRelease(pPath_0);
CGContextRestoreGState(context);

私が作成したばかりの形状を取り、ビューフレームに完全に収まるように水平方向と垂直方向の両方に伸ばすことができるコアグラフィックスの方法はありますか? IEなので、すべてのポイントと値を手動で調べて、ビューの境界に関してそれらを書き込む必要はありませんか? この形状についてはそれほど難しくないことはわかっていますが、より複雑な形状で時間がかかるため、それを避けたい..

4

1 に答える 1

0

使用できることがわかりました:

CGAffineTransform transform = CGAffineTransformMakeScale(frame.size.width/shapeWidth, frame.size.height/shapeHeight);
CGMutablePathRef mutablePathTransform = CGPathCreateMutableCopyByTransformingPath(mutablePath, &transform);
于 2012-07-27T22:15:54.837 に答える