【问题标题】:How to make sharp border of shape in CGrect?如何在CGrect中制作清晰的形状边框?
【发布时间】:2017-02-01 13:25:26
【问题描述】:

我正在使用 CGrect 绘制带边框的圆形,但我没有得到清晰的圆形边框这是我的代码:

 CGRect rect = CGRectMake(lastPoint1.x - CircleRadius ,lastPoint1.y - CircleRadius,CircleDia,CircleDia);
    CGContextSetFillColorWithColor(ctx, [Util_color getThemeColor].CGColor);
    CGContextFillEllipseInRect(ctx, rect);
    CGContextSetRGBStrokeColor(ctx, 255.0, 255.0, 255.0, 1.0);
    CGContextStrokeEllipseInRect(ctx, rect);
    CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
    CGContextSetLineWidth(ctx, 3.0);
     CGContextSetShouldAntialias(ctx, YES);
    CGContextSetLineCap(cox,kCGLineCapRound);

但我仍然得到模糊边框!有没有办法使用 CGrect 获得清晰的边框?

【问题讨论】:

标签: ios objective-c cgrect


【解决方案1】:

您在像素之间进行绘图。有关解释和修复,请参见此处:http://orangejuiceliberationfront.com/are-your-rectangles-blurry-pale-and-have-rounded-corners/

(这是How to get a 1 pixel line with NSBezierPath? 的副本,我最初为此写了这个解释)

【讨论】:

  • 我不想使用图层,因为我想在 UIimage 中画圈
  • “层”是什么意思?那篇博文不是关于层的,而是关于石英绘图的。
  • NSBezierPath 在将图层添加到 UIImageview 时使用该图层而不是在原始图像中,我想要在 UIimage 上,那么解决方案是什么?
  • 这是您第一次提到您正在使用图层。你能在你的问题中加入更多关于你正在做什么的信息吗?绘制贝塞尔路径还是将其粘贴到图层中以进行绘制之间存在很大差异。
  • 发布您的代码。您发布的代码中没有 UIImage 。如果您遗漏了一半的问题,我们无能为力。
【解决方案2】:

猜测 OP 所指的锐利边框是尚未应用anti-aliasing 的意思。

CGContextSetShouldAntialias(ctx, NO);

【讨论】:

    猜你喜欢
    • 2011-11-09
    • 1970-01-01
    • 2020-02-21
    • 2013-11-20
    • 1970-01-01
    • 2014-12-22
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    相关资源
    最近更新 更多