4

NSBezierPath半透明の塗りつぶしが必要な があります。単色で塗りつぶすと、期待どおりの結果が得られます。ただし、半透明の色で塗りつぶすと、丸みを帯びたストロークのパスが得られますが、奇妙な長方形の塗りつぶしになります。次のようになります。

長方形の塗りつぶし

領域全体を塗りつぶす代わりに、塗りつぶされていない小さなボーダーでストークの内側に塗りつぶされた四角形を取得します。次のようにパスを設定しました。

NSBezierPath *menuItem = [NSBezierPath bezierPathWithRoundedRect:menuItemRect xRadius:3 yRadius:3]

[menuItem setLineWidth:4.0];
[menuItem setLineJoinStyle:NSRoundLineJoinStyle];

[[NSColor whiteColor] set];
[menuItem stroke];

[[NSColor colorWithCalibratedRed:0.000 green:0.000 blue:0.000 alpha:0.500] set];
[menuItem fill];

誰かが何かアイデアを持っていれば、それは素晴らしいことです。

ありがとう

4

1 に答える 1

1

NSBezierPath がパスの中央からストロークすると、半透明の塗りつぶしが境界線と重なり、小さな境界線が生じます。白い境界線と他の境界線を合計すると、最大 4 ピクセルになります。したがって、これを修正するには、別のベジエ パスを作成して、2 つが互いに重ならないようにする必要があると思います。

于 2013-06-29T12:00:14.720 に答える