我知道自己想做什么,但不知道如何实现。我是 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 将符号转换为蒙版,然后识别并填充特定区域吗?
我现在得到的是:
但我真正想要的是:
最佳答案
您可以使用 -[NSBezierPath appendBezierPathWithGlyph:inFont] 然后将颜色设置为白色并在该路径上调用 -fill。
编辑:由于您使用的是 iOS,而我不知道如何在 iOS 上获取字形路径,因此我只是将字形绘制到填充有 100% 不透明白色的缓冲区,然后从 0,0 开始使用纯透明进行填充。
另一个编辑:使用下面的 jrturton 代码,您应该能够按照最初的建议在路径上简单地进行白色填充,然后用黑色描边。
关于ios - 如何使用 Core Graphics 在 `drawRect` 中填充一个 unicode 符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20940872/