为啥CGContextSetFillColorWithColor在ios中的矩形区域填充错误的颜色

Posted

技术标签:

【中文标题】为啥CGContextSetFillColorWithColor在ios中的矩形区域填充错误的颜色【英文标题】:Why CGContextSetFillColorWithColor filling wrong color in a rectangle area in ios为什么CGContextSetFillColorWithColor在ios中的矩形区域填充错误的颜色 【发布时间】:2014-05-22 10:53:35 【问题描述】:

在其中一个应用程序中,我使用CGContextSetFillColorWithColor 在矩形区域中填充颜色。它工作正常并填充正确的颜色,但有时它会填充黑色。我不知道这个问题背后的原因。

代码:

rectangle = CGRectMake(x,y, width, 187/[appDelegate.result count]);

        CGContextAddRect(context, rectangle);
        CGContextStrokePath(context);


        NSMutableParagraphStyle* p = [NSMutableParagraphStyle new];
        p.alignment = NSTextAlignmentCenter;
     //   p.lineBreakMode=NSLineBreakByWordWrapping;

        UIColor *color1 = [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1.0];
        NSLog(@"color is %@",color1.CGColor);

       CGContextSetFillColorWithColor(context,color1.CGColor);


        //CGContextSetFillColor(context, CGColorGetComponents(color1.CGColor));
        NSLog(@"rectangle is %f",rectangle.size.height);
        CGContextFillRect(context, rectangle);

日志信息:颜色是:

<CGColor 0xc216020> [<CGColorSpace 0xc0124b0> (kCGColorSpaceDeviceRGB)] ( 0.933333 0 0 1)

【问题讨论】:

您是否尝试过记录 r、g、b 值?可能是它们没有按预期值出现,有时它们都出现为 0,导致 UIColor 设置为黑色? 【参考方案1】:

您的 r,g,b 变量设置是否正确?如果出现黑色填充,请尝试调试它们。 我不知道它是否有帮助,但我更喜欢使用[color1 setFill];

【讨论】:

【参考方案2】:

当你填充 Rect 你的上下文时,你应该关闭你的路径!尝试关闭路径,然后 d

【讨论】:

以上是关于为啥CGContextSetFillColorWithColor在ios中的矩形区域填充错误的颜色的主要内容,如果未能解决你的问题,请参考以下文章

为啥 DataGridView 上的 DoubleBuffered 属性默认为 false,为啥它受到保护?

为啥需要softmax函数?为啥不简单归一化?

为啥 g++ 需要 libstdc++.a?为啥不是默认值?

为啥或为啥不在 C++ 中使用 memset? [关闭]

为啥临时变量需要更改数组元素以及为啥需要在最后取消设置?

为啥 CAP 定理中的 RDBMS 分区不能容忍,为啥它可用?