如何使用Core Graphics在`drawRect`中填充unicode符号?

时间:2014-01-06 00:04:15

标签: ios core-graphics mask

我知道我想做什么,但我不确定如何实现它。我是Core Graphics的新手,我不确定这是否可能。

我有一个像这样的unicode符号:♖

此符号的白色部分是透明的,我将它绘制在一个透明的矩形中,如下所示:

- (void)drawRect:(CGRect)rect
{
    NSMutableParagraphStyle *textStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy];
    textStyle.alignment = NSTextAlignmentCenter;

    UIFont* myFont = [UIFont fontWithName:@"ArialUnicodeMS" size:80];

    NSDictionary *attrs =
    @{ NSForegroundColorAttributeName : [UIColor blackColor],
       NSFontAttributeName:myFont,
       NSParagraphStyleAttributeName:textStyle
       };


    [[self getStringForValue:_squareValue] drawInRect:rect withAttributes:attrs];

}

我想要的是用白色填充内部透明部分,并将周围的矩形保持透明。

我正在考虑的方法是使用unicode符号作为drawRect中的掩码,将矩形划分为区域。然后不填充从0,0开始的区域,而是填充所有其他区域。我可以使用Core Graphics将符号转换为蒙版,然后识别并填充特定区域吗?

我现在得到的是:
no fill

但我真正想要的是这个:
with fill

1 个答案:

答案 0 :(得分:1)

您可以使用 - [NSBezierPath appendBezierPathWithGlyph:inFont],然后将颜色设置为白色并在该路径上调用-fill。

编辑:因为你在iOS上,我不知道如何在iOS上获取字形的路径,而是我只是将字形绘制到一个充满100%不透明白色的缓冲区,然后从纯度透明的0,0开始进行洪水填充。

另一个编辑:使用下面的jrturton代码,您应该能够像原先建议的那样在路径上进行白色填充,然后用黑色描边。