gpt4 book ai didi

ios - 更改图像颜色时更改 CGContext 的线宽?

转载 作者:行者123 更新时间:2023-12-01 17:26:16 24 4
gpt4 key购买 nike

我正在尝试更改使用 CG 绘制的矩形的宽度和颜色。在下面的函数中,我用不同的颜色遮盖了图像,但是如何更改宽度?

- (void)colorImage:(UIImage *)origImage withColor:(UIColor *)color withWidth:(float) width
{
UIImage *image = origImage;
NSLog(@"%f", width);
CGRect rect = CGRectMake(0, 0, image.size.width, image.size.height);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, width);
CGContextClipToMask(context, rect, image.CGImage);
CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, rect);
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

UIImage *flippedImage = [UIImage imageWithCGImage:img.CGImage
scale:1.0 orientation: UIImageOrientationDownMirrored];

self.image = flippedImage;
}

最佳答案

您使用 CGContextSetLineWidth(context, width) 设置线宽.

您没有看到任何效果的原因是因为您没有抚摸任何东西。线宽适用于通过描边绘制的线条。您正在填充,而不是抚摸,并且填充没有可以赋予宽度的线条。

如果要在矩形周围添加边框,则需要对其进行描边。这就是在某些形状的周边上画一条线的原因。

你有三个选择:

  • 调用 CGContextSetLineWidth ,然后 CGContextStrokeRect .
  • 调用 CGContextStrokeRectWithWidth .
  • 调用 CGContextSetLineWidth ,然后 CGContextAddRect (将矩形添加到当前路径),然后 CGContextDrawPathkCGPathFillStroke . (如果您愿意,也可以在 AddRect 之前调用 SetLineWidth — 它们只需要在 DrawPath 之前发生。)

  • 请注意,笔划以路径轮廓为中心,因此一半在路径/矩形内部,一半在外部。如果你的线是 1 像素宽,这将显示为半透明的线(因为没有其他方法可以表示“半像素”)。如果您的线条是偶数个像素宽,并且您划过上下文(或 View )的整个边界,您将只能看到内部线条的一半。

    您还应该确定您是否真的要填充,或者仅中风是否是您想要的。

    关于ios - 更改图像颜色时更改 CGContext 的线宽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17137877/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com