`
浮生长恨
  • 浏览: 212219 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ios画图总结(转)

阅读更多

原地址:http://www.cnblogs.com/yuanxiaoping_21cn_com/archive/2012/03/24/2415706.html

 

0 CGContextRef context = UIGraphicsGetCurrentContext(); 设置上下文
1 CGContextMoveToPoint 开始画线
2 CGContextAddLineToPoint 画直线

4 CGContextAddEllipseInRect 画一椭圆
4 CGContextSetLineCap 设置线条终点形状
4 CGContextSetLineDash 画虚线
4 CGContextAddRect 画一方框
4 CGContextStrokeRect 指定矩形
4 CGContextStrokeRectWithWidth 指定矩形线宽度
4 CGContextStrokeLineSegments 一些直线

5 CGContextAddArc 画已曲线 前俩店为中心 中间俩店为起始弧度 最后一数据为0则顺时针画 1则逆时针
5 CGContextAddArcToPoint(context,0,0, 2, 9, 40);//先画俩条线从point 到 弟1点 , 从弟1点到弟2点的线  切割里面的圆
6 CGContextSetShadowWithColor 设置阴影
7 CGContextSetRGBFillColor 这只填充颜色
7 CGContextSetRGBStrokeColor 画笔颜色设置
7 CGContextSetFillColorSpace 颜色空间填充
7 CGConextSetStrokeColorSpace 颜色空间画笔设置
8 CGContextFillRect 补充当前填充颜色的rect
8 CGContextSetAlaha 透明度

9 CGContextTranslateCTM 改变画布位置
10 CGContextSetLineWidth 设置线的宽度
11 CGContextAddRects 画多个线
12 CGContextAddQuadCurveToPoint 画曲线
13 CGContextStrokePath 开始绘制图片
13 CGContextDrawPath 设置绘制模式
14 CGContextClosePath 封闭当前线路
15 CGContextTranslateCTM(context, 0, rect.size.height);    CGContextScaleCTM(context, 1.0, -1.0);反转画布
16 CGContextSetInterpolationQuality 背景内置颜色质量等级
16 CGImageCreateWithImageInRect 从原图片中取小图

17 字符串的 写入可用  nsstring本身的画图方法 - (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font lineBreakMode:(UILineBreakMode)lineBreakMode alignment:(UITextAlignment)alignment;来写进去即可

18对图片放大缩小的功能就是慢了点
    UIGraphicsBeginImageContext(newSize);
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();

19 CGColorGetComponents() 返回颜色的各个直 以及透明度 可用只读const float 来接收  是个数组

20 画图片 CGImageRef image=CGImageRetain(img.CGImage);
     CGContextDrawImage(context, CGRectMake(10.0, height -              
     100.0, 90.0, 90.0), image);

21 实现逐变颜色填充方法 CGContextClip(context);
    CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();
    CGFloat colors[] =
    {
        204.0 / 255.0, 224.0 / 255.0, 244.0 / 255.0, 1.00,
        29.0 / 255.0, 156.0 / 255.0, 215.0 / 255.0, 1.00,
        0.0 / 255.0,  50.0 / 255.0, 126.0 / 255.0, 1.00,
    };
    CGGradientRef gradient = CGGradientCreateWithColorComponents      
   (rgb, colors, NULL, sizeof(colors)/(sizeof(colors[0])*4));
    CGColorSpaceRelease(rgb);    
    CGContextDrawLinearGradient(context, gradient,CGPointMake    
   (0.0,0.0) ,CGPointMake(0.0,self.frame.size.height),                    
     kCGGradientDrawsBeforeStartLocation);
    
22 注:  画完图后,必须
    先用CGContextStrokePath来描线,即形状
    后用CGContextFillPath来填充形状内的颜色.


填充一个路径的时候,路径里面的子路径都是独立填充的。
假如是重叠的路径,决定一个点是否被填充,有两种规则
1,nonzero winding number rule:非零绕数规则,假如一个点被从左到右跨过,计数器+1,从右到左跨过,计数器-1,最后,如果结果是0,那么不填充,如果是非零,那么填充。
2,even-odd rule: 奇偶规则,假如一个点被跨过,那么+1,最后是奇数,那么要被填充,偶数则不填充,和方向没有关系。

 
 Function
Description 
 CGContextEOFillPath
 使用奇偶规则填充当前路径
 CGContextFillPath
 使用非零绕数规则填充当前路径
 CGContextFillRect
 填充指定的矩形
 CGContextFillRects
 填充指定的一些矩形
 CGContextFillEllipseInRect
 填充指定矩形中的椭圆
 CGContextDrawPath
 两个参数决定填充规则,kCGPathFill表示用非零绕数规则,kCGPathEOFill表示用奇偶规则,kCGPathFillStroke表示填充,kCGPathEOFillStroke表示描线,不是填充


设置当一个颜色覆盖上另外一个颜色,两个颜色怎么混合
默认方式是
result = (alpha * foreground) + (1 - alpha) * background

CGContextSetBlendMode :设置blend mode.
CGContextSaveGState :保存blend mode.
CGContextRestoreGState:在没有保存之前,用这个函数还原blend mode.
CGContextSetBlendMode 混合俩种颜色

分享到:
评论

相关推荐

    iOS画图类画圆形饼状图

    在iOS开发中,为了实现美观的数据可视化,我们经常需要利用画图类来绘制各种图形,如饼状图。本教程将深入探讨如何使用iOS提供的Core Graphics框架,也称为Quartz 2D,来创建自定义的圆形饼状图。这个过程涉及到多个...

    iOS绘画板画图画线

    总结起来,“iOS绘画板画图画线”项目涵盖了多个iOS开发中的重要知识点,包括图形绘制、手势识别、图片处理、用户交互以及数据管理。对于初学者来说,这是一个很好的实践平台,可以深入理解iOS应用开发的核心技术,...

    简易画板Demo

    总结起来,"简易画板Demo"涵盖的知识点包括:iOS图形上下文的使用、贝塞尔路径绘图、触摸事件处理、用户界面设计、数据持久化以及可能的图像处理算法。这个项目对于学习iOS开发,特别是图形界面编程来说,是一个很好...

    iOS Demo 画板

    本Demo——"iOS Demo 画板",提供了一个简易的画图环境,让用户能够自由地绘制、编辑和保存他们的作品。 1. **UIKit框架**:作为iOS应用程序的基础,UIKit负责处理窗口、视图、控件等UI元素的显示和交互。在这个...

    DrawPathTest Demo代码

    总结来说,"DrawPathTest Demo代码"是一个展示如何在iOS应用中利用`UIBezierPath`和Core Graphics进行图形绘制的实例。它涵盖了路径创建、图形渲染、颜色与样式设置、以及可能的用户交互处理。这个Demo对于学习iOS...

    基于QT的画图版

    总结,"基于QT的画图版"是一个利用QT的绘图功能和图形视图框架实现的项目,通过源代码学习,可以掌握QT的基本用法、事件处理和图形交互设计。这个项目对于学习QT的图形界面编程和2D绘图是个很好的起点。

    DelphiXE FireMonkey 如何画图.rar

    FireMonkey是Embarcadero Delphi开发平台的一个重要组成部分,它提供了一种跨平台的UI构建工具,允许开发者创建能够在Windows、Mac OS X、iOS以及Android等不同操作系统上运行的应用程序。 FireMonkey框架以其强大...

    iOS开发中使用Quartz2D绘图及自定义UIImageView控件

    总结一下,iOS开发中使用Quartz2D和自定义UIImageView控件的关键在于理解图形上下文的概念,掌握创建和使用Bitmap Graphics Context的方法,以及熟悉Quartz2D提供的绘图API。通过这些技术,开发者可以创造出高度...

    ios-HYYBoard画板.zip

    总结起来,HYYBoard是一个针对iOS平台的简单画板实现,它利用UIBezierPath和手势识别技术提供电子签名功能。通过集成HYYBoard,开发者可以轻松地在自己的应用中添加签名模块,同时还可以根据需求进行个性化定制,...

    python画图-JavaWeb-ma开发

    总结,"Python画图"与"JavaWeb"的结合意味着在数据驱动的Web应用中,开发者可以使用Python进行数据处理和可视化,然后将这些结果整合到JavaWeb应用中,为用户提供丰富的数据展示和交互体验。这种跨领域的技能组合在...

    cocoscreator创建二维码_画图方式.rar

    下面将详细讲解如何利用Cocos Creator的画图方式来实现二维码的创建。 首先,我们需要了解二维码的基本原理。二维码(Quick Response Code)是一种二维条形码,能够存储比传统一维条形码更多的信息,如文字、网址、...

    苹果你画我猜画画工具

    - 由于标题提到“苹果”,我们可以推断这款画画工具主要针对的是苹果的操作系统,如macOS或iOS。这意味着它可能需要在Apple设备上运行,并且可能有优化的界面和功能适应苹果的设计哲学。 2. **画图功能**: - ...

    my-pic.rar_grown2dl_site:www.pudn.com_用devc++画图

    要使用Dev C++画图,我们需要借助图形库,如SDL(Simple DirectMedia Layer)或OpenGL。但在这个例子中,描述并未提及具体使用哪个库,所以我们将假设我们仅使用标准C++库来实现。在C++中,可以使用字符数组来表示...

    DrawLineTest Demo代码

    总结起来,"DrawLineTest" Demo的核心知识点包括: 1. 自定义UIView子类用于绘图。 2. 使用Core Graphics进行2D图形绘制,包括设置线条颜色、宽度和路径。 3. 处理触摸事件,实现实时动态绘图。 4. 使用UIBezierPath...

    DrawImageTest Demo代码

    总结,`DrawImageTest`Demo代码主要展示了如何利用`UIImage`和`drawRect:`方法在iOS应用中自定义视图的绘图逻辑,这在创建动态视图、动画效果或者进行复杂界面设计时非常有用。理解并熟练运用这些知识点,将有助于...

    swift-使用ARKit在空中用裸手指绘画

    - ARKit是Apple提供的官方SDK,用于在iOS、iPadOS和macOS上创建AR应用。 - 它支持平面检测、物体检测、光线估计等功能,为AR体验提供基础。 2. **手势识别**: - 在这个项目中,关键在于识别用户的裸手指手势。...

    c#绘图源代码

    1. `[iPhone和iPad开发书籍大全].Learning.ObjectiveC.2.0(Addison.Wesley.2010-07).pdf` - 这是一本关于Objective-C的书籍,Objective-C是iOS开发的主要语言,可能包含有关图形编程的信息,尽管它不是C#,但可以为...

    把旧平板手机变成办公工具.docx

    以下是根据文章内容总结的一些关键知识点: 1. **移动式屏幕**:利用特定的应用程序,如iOS和Android平台上的"Air Display",可以把旧平板电脑变成移动显示器,用于监控、查看通知或作为多媒体工具。 2. **无线...

    iPad程序设计

    - **示例二:** 创建一款画图应用,利用iPad的大屏幕和多点触控功能,提供更丰富的绘画工具和更直观的用户界面。 - **示例三:** 设计一款游戏,利用iPad的额外空间来增加游戏内的元素数量,提升游戏的沉浸感。 ###...

    涂鸦屋

    【涂鸦屋】是一款基于iOS平台的涂鸦应用,它允许用户通过Swift编程语言实现自由绘画、创作,体验丰富的画图功能。应用的核心是利用Swift的强大学术性和易用性,结合Sketch的设计理念,为iOS用户提供一个简洁而富有...

Global site tag (gtag.js) - Google Analytics