IOS图像处理(1)绘制简单的几何图形

通过CoreGraphic绘制图像一般有以下几个步骤:

1:获取图形上下文对象

绘制图像首先需要取得图形上下文对象(CGContextRef),系统中维护一个CGContextRef的栈,在UI控件的drawRect方法调用前,系统会为当前绘图环境创建一个图形上下文对象并且置于CGContextRef栈顶,通过UIGraphicsGetCurrentContext()可以取得这个图像上下文对象。

2:设置绘画的属性,可以配置线条颜色,填充颜色,线条宽度,阴影,线段端点形状,点线模式,线条连接点风格,叠加模式等属性

3:通过API绘制图像

- (void)drawRect:(CGRect)rect
{
    //获取图像上下文对象
    CGContextRef context = UIGraphicsGetCurrentContext();

    //设置线段宽度
    CGContextSetLineWidth(context, 2);
    //通过RGB模式设置线条颜色,最后一个参数代表透明度
    CGContextSetRGBStrokeColor(context, 250/255.0, 250/255.0, 250/255.0, 1);
    //设置填充颜色
    CGContextSetFillColorWithColor(context, [UIColor greenColor].CGColor);
    //设置阴影,第二个参数是阴影在x轴以及y轴的偏移量,第三个参数设定阴影的模糊程度,0表示不模糊,阴影默认颜色为黑色,透明度0.3
    CGContextSetShadow(context, CGSizeMake(3, 3), 5);
    //设置线段端点形状,第二个参数是个枚举类型,包含3个选项
    CGContextSetLineCap(context, kCGLineCapRound);
    //设置线条连接风格
    CGContextSetLineJoin(context, kCGLineJoinRound);

    //绘制线段,points是点数组,两个点确定一条线,下面的数组有8个点,可以确定4条线段
    const CGPoint points[] = {CGPointMake(10, 30),CGPointMake(100, 30),CGPointMake(100, 30),CGPointMake(100, 100),CGPointMake(100, 100),CGPointMake(10, 100),CGPointMake(10, 100),CGPointMake(10, 30)};
    //绘制
    CGContextStrokeLineSegments(context, points, 8);

    //填充矩形
    CGContextFillRect(context, CGRectMake(120, 30, 80, 50));
    //绘制矩形
    CGContextStrokeRect(context, CGRectMake(120, 100, 80, 50));

    //绘制椭圆
    CGContextStrokeEllipseInRect(context, CGRectMake(220, 30, 80, 50));

    //绘制虚线
    //绘制虚线需要设置点线模式
    CGFloat pattern[] = {5,5};
    CGContextSetLineDash(context, 1, pattern, 2);

    const CGPoint points2[] = {CGPointMake(100, 190),CGPointMake(220, 190)};
    CGContextStrokeLineSegments(context, points2, 2);
}

运行结果

上面的代码中设置点线模式时用到了CGContextSetLineDash这个函数,函数有4个参数,第一个参数表示图像上下文对象,第二个参数配合第三个参数用来指定第一个点线的长度,第三个参数是一个浮点数组,最后一个参数是第三个参数中数组的长度。

我们传的数组是{5,5}表示点线长5,间隔5,如果数组为{2,3,4}表示点线长2,间隔3,点线长4,间隔2,点线长3,间隔4这样依次下去。

数组第一个数字减去函数的第2个参数表示第一个点线的长度,比如上例中数组第一个数字是5,参数第2个数字是1,所以第一个点线长为4。

时间: 2024-08-28 21:16:15

IOS图像处理(1)绘制简单的几何图形的相关文章

OpenGL学习-------绘制简单的几何图形

本次课程所要讲的是绘制简单的几何图形,在实际绘制之前,让我们先熟悉一些概念. 一.点.直线和多边形我们知道数学(具体的说,是几何学)中有点.直线和多边形的概念,但这些概念在计算机中会有所不同.数学上的点,只有位置,没有大小.但在计算机中,无论计算精度如何提高,始终不能表示一个无穷小的点.另一方面,无论图形输出设备(例如,显示器)如何精确,始终不能输出一个无穷小的点.一般情况下,OpenGL中的点将被画成单个的像素(像素的概念,请自己搜索之~),虽然它可能足够小,但并不会是无穷小.同一像素上,Op

2.绘制简单的几何图形

一.点.直线和多边形 数学上的点,只有位置,没有大小.但在计算机中,无论计算精度如何提高,始终不能表示一个无穷小的点.另一方面,无论图形输出设备如何精确, 始终不能输出一个无穷小的点.一般情况下,OpenGL中的点将被画成单个的像素,虽然它可能足够小,但并不会是无穷小. 同一像素上,OpenGL可以绘制许多坐标只有稍微不同的点,但该像素的具体颜色将取决于OpenGL的实现. 同样的,数学上的直线没有宽度,但OpenGL的直线则是有宽度的.同时,OpenGL的直线必须是有限长度,而不是像数学概念那

iOS图像处理之绘制直线

-(void)drawLine:(CGPoint)fromPnt toPoint:(CGPoint)toPnt{ float xScale = theImageView.image.size.width/theImageView.frame.size.width; float yScale = theImageView.image.size.height/theImageView.frame.size.height; UIGraphicsBeginImageContext(theImageVie

IOS图像处理(3)绘制路径

通过路径我们可以实现更加复杂的图形的绘制,比如多边形,弧,圆角矩形等等 - (void)drawRect:(CGRect)rect { //获取图像上下文对象 CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetRGBStrokeColor(context, 250/255.0, 250/255.0, 250/255.0, 1); CGContextSetFillColorWithColor(context, [UI

详解OS X和iOS图像处理框架Core Image

转自:http://www.csdn.net/article/2015-02-13/2823961-core-image 摘要:本 文结合实例详解了OS X和iOS图像处理框架Core Image的使用,如何通过Core Image来创建和使用iOS的内置滤镜,非常适合初学者学习.虽然示例代码是用Swift写的iOS程序,不过实现概念很容易转换到 Objective-C和OS X. 这篇文章会为初学者介绍一下Core Image,一个OS X和iOS的图像处理框架. 如果你想跟着本文中的代码学习

Java入门:绘制简单图形

在上一节,我们学习了如何使用swing和awt工具创建一个空的窗口,本节学习如何绘制简单图形. 基本绘图介绍 Java中绘制基本图形,可以使用Java类库中的Graphics类,此类位于java.awt包中.在我们自己的java程序文件中,要使用Graphics类就需要使用import java.awt.Graphics语句将Graphics类导入进来. Graphics类提供基本的几何图形绘制方法,主要有:画线段.画矩形.画圆.画带颜色的图形.画椭圆.画圆弧.画多边形等.本项目仅用到画直线的功

iOS开发网络篇—简单介绍ASI框架的使用

iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大. ASI的实现基于底层的CFNetwork框架,因此运行效率很高.可惜作者早已停止更新,有一些潜在的BUG无人去解决 ASI的github地址 https://github.com/pokeb/asi-http-request ASI的使用参考 http://www.cnblogs.com/dot

iOS 图像处理-剪裁图像

解决问题:按照某一长宽比例,剪裁图片的上部和下部,保留中间的内容.当然也可以自定义需要剪裁留下的区域 前提:需要添加Framework:CoreGraphics.framework 代码: - (UIImage*) crop:(UIImage*)theImage{ // Get size of current image CGSize size = [theImage size]; // Create rectangle that represents a cropped image CGFlo

iOS 图像处理 - 图像拼接

解决问题:将两个图像拼接在一起 前提:需要添加Framework:CoreGraphics.framework 源码: - (UIImage *) combine:(UIImage*)leftImage :(UIImage*)rightImage { CGFloat width = leftImage.size.width * 2; CGFloat height = leftImage.size.height; CGSize offScreenSize = CGSizeMake(width, h