1

ベジェ パスを使用して drawRect メソッドで四角形に丸い角を描画しようとしていますが、どういうわけか丸みを帯びた角が四角形の内側と外側の両方ではなく内側に表示されています。コードを以下に示します。現在描画中のボーダーもここに添付されています(ボーダーの外側は丸められていません)

内側の角のみを丸くした画像

 - (void)drawRect:(CGRect)rect
 {


  // Drawing code
    CGContextRef context=UIGraphicsGetCurrentContext();

    //Set gray color to whole context
    [[UIColor lightGrayColor] set];
    CGContextSetAlpha(context,0.7);
    UIRectFill(rect);

    // Configure the context colors and line
    CGContextSetStrokeColorWithColor(context, [UIColor colorWithRed:131./255. green:148./255. blue:219./255. alpha:1.0].CGColor);
    CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
    CGContextSetLineWidth(context, 10.0);
    CGSize size=self.bounds.size;

    CGFloat radius = 10.0;

    CGSize guideSize=CGSizeMake(330, 130);
    CGRect guideCoords= CGRectMake(size.width*.5-guideSize.width*.5, size.height*.5-guideSize.height*.5, guideSize.width , guideSize.height);

    // Guide drawing
    CGContextStrokeRect(context,guideCoords);

    // Draw the Text
    [kVinGuideMessage drawInRect:CGRectMake(guideCoords.origin.x+kSideMessageMargin, guideCoords.origin.y+guideSize.height+kMarginFromGuide, guideCoords.size.width-2*kSideMessageMargin,40) withFont:[UIFont systemFontOfSize:16.0] lineBreakMode:NSLineBreakByWordWrapping alignment:NSTextAlignmentLeft];


    //Get instersection and clear color of inner overlay
    CGRect holeRectIntersection = CGRectIntersection(rect,guideCoords);

    //----------ADDING ROUNDED CORNERS HERE-----------//
    CGPathRef clippath = [UIBezierPath bezierPathWithRoundedRect:guideCoords cornerRadius:radius].CGPath;
    CGContextAddPath(context, clippath);
    CGContextClip(context);
    //------------------------------------------------//
    [[UIColor clearColor] setFill];
    UIRectFill(holeRectIntersection);

}

4

1 に答える 1

1

外側の角はCGContextStrokeRect(context,guideCoords);私が思うに描かれています。その時点でクリッピング パスを設定しておらず、線幅が 10 ポイントであるのに、なぜ外側の角が丸くなるのでしょうか? guideCoords の四角形でストローク rect を呼び出す前に、クリッピング パス (おそらく、下部にあるクリッピング パスとまったく同じではない) を設定すると、運が良くなると思います。

于 2013-03-27T17:57:51.657 に答える