我知道我想做什么,但我不确定如何实现它。我是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将符号转换为蒙版,然后识别并填充特定区域吗?
我现在得到的是:
但我真正想要的是这个:
答案 0 :(得分:1)
您可以使用 - [NSBezierPath appendBezierPathWithGlyph:inFont],然后将颜色设置为白色并在该路径上调用-fill。
编辑:因为你在iOS上,我不知道如何在iOS上获取字形的路径,而是我只是将字形绘制到一个充满100%不透明白色的缓冲区,然后从纯度透明的0,0开始进行洪水填充。另一个编辑:使用下面的jrturton代码,您应该能够像原先建议的那样在路径上进行白色填充,然后用黑色描边。