2

スタック オーバーフローの助けを借りて、iPhone でのクォーツ描画に慣れてきました。三日月のパターンを切り取るコードを作成したいのですが、これは私がこれまでに持っているものですが、期待どおりに機能していません:

contextRef = UIGraphicsGetCurrentContext();
CGContextSaveGState(contextRef);
onlyDrawTopHalf = YES;
halfMultiplier = onlyDrawTopHalf ? -1.0 : 1.0;
ellipse = CGRectMake(50, 50, 128, 128);
clipRect = CGRectOffset(ellipse, halfMultiplier * ellipse.size.width / 2, 0);
CGContextClipToRect(contextRef, clipRect);
CGContextRestoreGState(contextRef);


onlyDrawTopHalf = YES;
halfMultiplier = onlyDrawTopHalf ? -1.0 : 1.0;
ellipse = CGRectMake(50, 50, 100, 128);
clipRect = CGRectOffset(ellipse, halfMultiplier * ellipse.size.width / 2, 0);
CGContextAddEllipseInRect(contextRef, clipRect);
CGContextEOClip(contextRef);
CGContextFillEllipseInRect(contextRef, ellipse);

正確には、コードの最初の段落は円を描画し (これは機能します)、2 番目の段落はそこから楕円を切り取る必要がありますが、これは意図したとおりに機能していません。

4

1 に答える 1

0

どちらの形状も、楕円ではなく完全な円である必要があります。完璧な三日月効果を得るには、2 番目の円の半径を少し小さくし、右 (または左) に少しシフトする必要があります。

于 2011-12-12T14:09:38.423 に答える