【问题标题】:Drawing a bridge with Quartz 2D使用 Quartz 2D 绘制桥梁
【发布时间】:2011-06-19 15:33:06
【问题描述】:

我正在尝试绘制以下图像:

使用这个objective-c代码:

CGContextSetFillColorWithColor(ctx, [[UIColor redColor] CGColor]);
CGContextMoveToPoint(ctx, position.X - (size.width / 2), position.Y - (size.height / 2));
CGContextAddLineToPoint(ctx, position.X - (size.width / 2), position.Y + (size.height / 2));
CGContextAddLineToPoint(ctx, position.X - (size.width / 4), position.Y + (size.height / 2));
CGContextAddArc(ctx, position.X, position.Y + (size.height / 2), (size.width / 4), -M_PI, M_PI, 0);
CGContextAddLineToPoint(ctx, position.X + (size.width / 2), position.Y + (size.height / 2));
CGContextAddLineToPoint(ctx, position.X + (size.width / 2), position.Y - (size.height / 2));
CGContextFillPath(ctx);

但它不起作用。我得到这张图片:

图片的宽度为size.width,高度为size.height。 来源是(position.X, position.Y)。这个点在中心,在 (size.width /2, size.height / 2)。

第一个点是左上角,第二个点是左下角。然后继续向右。

这里有一个更好的解释:

对不起我的英语。

有什么建议吗?

【问题讨论】:

    标签: iphone quartz-graphics quartz-2d objective-c-2.0


    【解决方案1】:

    我改变了这一行:

    CGContextAddArc(ctx, position.X, position.Y + (size.height / 2), (size.width / 4), -M_PI, M_PI, 0);
    

    以下内容:

    CGContextAddArc(ctx, position.X, position.Y + (size.height / 2), (size.width / 4), -M_PI, 0, 0);
    

    现在它起作用了!!!我对第二个角度有误。而不是M_PI,正确的是0。

    【讨论】:

      【解决方案2】:

      你说: 图像的宽度为 size.width,高度为 size.height。原点是(position.X, position.Y),这个点在中心,在(size.width /2, size.height / 2)。

      首先想到的是,一般来说,您的中心点实际上位于 (position.X + size.width/2.0, position.Y + size.width/2.0),(如果您愿意,可以将其包裹在 floorf 中)。

      如果这不起作用,我的建议是为每个中间值创建 CGPoint、CGRect 等,以使您的所有计算都明确。然后,如果需要,您可以对它们进行 NSLog,找出您的计算出错的确切位置。

      【讨论】:

      • 不,我的中心是 (position.X, position.Y)。
      • 如果您认为问题出在 AddArc,您是否注释掉了该行和下一行,并确认您只是得到一个矩形?你现在的结果图像是什么?
      • 我用新的细节更新了我的问题。我也修改了代码。
      【解决方案3】:

      颠倒你的点画顺序能解决问题吗?

      【讨论】:

      • 没有。如果我这样做,我会得到一个完整的圆圈。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多