1

我正在使用核心图形制作各种形状的气泡。

但是,我不确定如何制造思想泡沫。

我从矩形制作了圆角矩形。我是否使用相同的方法

做一个思想泡泡还是有其他方法?

4

1 回答 1

4

我认为您可以将其用作初始指导,然后以此为基础:

如何在 iPhone 上以编程方式绘制椭圆形气泡?

这是samfu_1对该帖子的回答

我会在两次迭代中完成。首先获取上下文并开始一条路径。填充一个椭圆,然后填充一个自定义路径,该路径用三条线包围一个三角形。我假设以下尺寸:70 宽,62 高。在 UIView 的子类中覆盖 draw rect 并在子类 UIViewController 中实例化:

-(void)drawRect:(CGRect)rect {
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGContextSetRGBFillColor(ctx, 0.0, 0.0, 1.0, 1.0);
    CGContextFillEllipseInRect(ctx, CGRectMake(0.0, 0.0, 70.0, 50.0)); //oval shape
    CGContextBeginPath(ctx);
    CGContextMoveToPoint(ctx, 8.0, 40.0);
    CGContextAddLineToPoint(ctx, 6.0, 50.0);
    CGContextAddLineToPoint(ctx, 18.0, 45.0);
    CGContextClosePath(ctx);
    CGContextFillPath(ctx);
}

当在灰色背景下添加时,在 iPhone 模拟器中生成:

在此处输入图像描述

第二个代码示例将几乎复制您在上面生成的内容。我使用灵活的尺寸实现了这一点,当你实例化它时可以提供给 UIView 框架。本质上,对话气泡的白色部分是用黑色笔划绘制的。

-(void)drawRect:(CGRect)rect {
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGRect aRect = CGRectMake(2.0, 2.0, (self.bounds.size.width * 0.95f), (self.bounds.size.width * 0.60f)); // set the rect with inset.
    CGContextSetRGBFillColor(ctx, 1.0, 1.0, 1.0, 1.0); //white fill
    CGContextSetRGBStrokeColor(ctx, 0.0, 0.0, 0.0, 1.0); //black stroke
    CGContextSetLineWidth(ctx, 2.0); 


    CGContextFillEllipseInRect(ctx, aRect); 
    CGContextStrokeEllipseInRect(ctx, aRect);    

    CGContextBeginPath(ctx);
    CGContextMoveToPoint(ctx, (self.bounds.size.width * 0.10), (self.bounds.size.width * 0.48f));
    CGContextAddLineToPoint(ctx, 3.0, (self.bounds.size.height *0.80f));
    CGContextAddLineToPoint(ctx, 20.0, (self.bounds.size.height *0.70f));
    CGContextClosePath(ctx);
    CGContextFillPath(ctx);

    CGContextBeginPath(ctx);
    CGContextMoveToPoint(ctx, (self.bounds.size.width * 0.10), (self.bounds.size.width * 0.48f));
    CGContextAddLineToPoint(ctx, 3.0, (self.bounds.size.height *0.80f));
    CGContextStrokePath(ctx);

    CGContextBeginPath(ctx);
    CGContextMoveToPoint(ctx, 3.0, (self.bounds.size.height *0.80f));
    CGContextAddLineToPoint(ctx, 20.0, (self.bounds.size.height *0.70f));
    CGContextStrokePath(ctx);
 }

在此处输入图像描述

编辑:

您也可以在这篇文章中参考Brad Larson的回答

如何在 iPhone 上画出“讲话泡泡”?

希望这对您有所帮助。

如果您需要更多帮助,请告诉我。

于 2012-04-08T06:00:17.050 回答