3

a のパスCAShapeLayerを 2 つの交互の色 (たとえば、黒と白、Preview.app の選択ボックスと考えてください) でストロークしたいと思います。これを行う方法、またはこれが Quartz で可能かどうかはわかりません。

白い境界線を持つ CAShapeLayer を設定し、パス プロパティを黒い破線に設定しました。私の希望は、これが白黒の破線の効果を与えることでした. ただし、パスが最初に描画され、境界線が上にストロークされるようです。スクリーンショットを参照してください (毛皮は私の猫のものです)。

白い境界線と黒いストローク パスを持つ CAShapeLayer。最初にパスが描画され、次に境界線が続きます。

これを機能させるためのより良いアプローチや方法を誰かが提案できますか?

コード、

// Stroke a white border
[shapeLayer setFrame:shapeRect];
[shapeLayer setBorderColor:[[NSColor whiteColor] CGColor]];
[shapeLayer setBorderWidth:1.0];

// Stroked a black dash path (along the border)
// and fill shape with clear colour
[shapeLayer setFillColor:[[NSColor clearColor] CGColor]];
[shapeLayer setStrokeColor:[[NSColor blackColor] CGColor]];
[shapeLayer setLineWidth:1.0];
[shapeLayer setLineJoin:kCALineJoinRound];
[shapeLayer setLineDashPattern:
 [NSArray arrayWithObjects:[NSNumber numberWithInt:5],
  [NSNumber numberWithInt:5],
  nil]];

CGMutablePathRef path = CGPathCreateMutable();
CGPathAddRect(path, NULL, shapeLayer.bounds);
[shapeLayer setPath:path];
CGPathRelease(path);
4

2 に答える 2