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

标签 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

最佳答案

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

编辑:由于您使用的是 iOS,而我不知道如何在 iOS 上获取字形路径,因此我只是将字形绘制到填充有 100% 不透明白色的缓冲区,然后从 0,0 开始使用纯透明进行填充。

另一个编辑:使用下面的 jrturton 代码,您应该能够按照最初的建议在路径上简单地进行白色填充,然后用黑色描边。

关于ios - 如何使用 Core Graphics 在 `drawRect` 中填充一个 unicode 符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20940872/

相关文章:

ios - AutoResizingMaskFlexibleWidth 最大宽度?

ios - 在Swift中尝试连接WebSocket时总是出现错误

ios - 如何手动弃用成员

ios - 如何在 UIView 上制作斜角?

ios - 如何在 swift 中定义 CGPatternDrawPatternCallback

python - 根据HSV图像的值 channel 为图像创建条件掩模

objective-c - NSXMLParser findCharacters 返回 "\n "个字符

ios - 在 cellForRowAtIndexPath 之后调用的 ViewDidLoad 成功 block

ios - 如何获取PDF的当前页码?

mysql - 有没有办法直接从 SELECT 查询中将 IP 与 IP+CIDR​​ 匹配?