`
啸笑天
  • 浏览: 3459548 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

CGContext 小记

 
阅读更多

 from http://www.cocoachina.com/bbs/read.php?tid=75122

 

 

 CGContextRef context = UIGraphicsGetCurrentContext(); 设置上下文

 CGContextMoveToPoint 开始画线

 CGContextAddLineToPoint 画直线

 

 CGContextAddEllipseInRect 画一椭圆

 CGContextSetLineCap 设置线条终点形状

 CGContextSetLineDash 画虚线

 CGContextAddRect 画一方框

 CGContextStrokeRect 指定矩形

 CGContextStrokeRectWithWidth 指定矩形线宽度

 CGContextStrokeLineSegments 一些直线

 

 CGContextAddArc 画已曲线 前俩店为中心 中间俩店为起始弧度 最后一数据为0则顺时针画 1则逆时针

 CGContextAddArcToPoint(context,0,0, 2, 9, 40);//先画俩条线从point 到 弟1点 , 从弟1点到弟2点的线  切割里面的圆

 CGContextSetShadowWithColor 设置阴影

 CGContextSetRGBFillColor 这只填充颜色

 CGContextSetRGBStrokeColor 画笔颜色设置

 CGContextSetFillColorSpace 颜色空间填充

 CGConextSetStrokeColorSpace 颜色空间画笔设置

 CGContextFillRect 补充当前填充颜色的rect

 CGContextSetAlaha 透明度

 

 CGContextTranslateCTM 改变画布位置

 CGContextSetLineWidth 设置线的宽度

 CGContextAddRects 画多个线

 CGContextAddQuadCurveToPoint 画曲线

 CGContextStrokePath 开始绘制图片

 CGContextDrawPath 设置绘制模式

 CGContextClosePath 封闭当前线路

 CGContextTranslateCTM(context, 0, rect.size.height);    CGContextScaleCTM(context, 1.0, -1.0);反转画布

 CGContextSetInterpolationQuality 背景内置颜色质量等级

 CGImageCreateWithImageInRect 从原图片中取小图

 

//字符串的 写入可用  nsstring本身的画图方法 

 -(CGSize)drawInRect:(CGRect)rect 

            withFont:(UIFont *)font 

       lineBreakMode:(UILineBreakMode)lineBreakMode 

           alignment:(UITextAlignment)alignment;来写进去即可

 

//对图片放大缩小的功能就是慢了点

 UIGraphicsBeginImageContext(newSize);

 UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();

 UIGraphicsEndImageContext();

 

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

 

//画图片 

 CGImageRef image=CGImageRetain(img.CGImage);

 CGContextDrawImage(context, CGRectMake(10.0, height - 100.0, 90.0, 90.0), image);

 

//实现逐变颜色填充方法 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);

    

//注:  画完图后,必须

    先用CGContextStrokePath来描线,即形状

    后用CGContextFillPath来填充形状内的颜色.

 

//填充一个路径的时候,路径里面的子路径都是独立填充的。

//假如是重叠的路径,决定一个点是否被填充,有两种规则

 1,nonzero winding number rule:非零绕数规则,假如一个点被从左到右跨过,计数器+1,从右到左跨过,计数器-1,最后,如果结果是0,那么不填充,如果是非零,那么填充。

 2,even-odd rule: 奇偶规则,假如一个点被跨过,那么+1,最后是奇数,那么要被填充,偶数则不填充,和方向没有关系。

 

 

 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 混合俩种颜色

 

 

 

 

 

 

 

 

 

 

分享到:
评论
1 楼 啸笑天 2013-11-08  
下面列出了Quartz 2D包含的数据类型:

CGPathRef:用于向量图,可创建路径,并进行填充或描画(stroke)CGImageRef:用于表示bitmap图像和基于采样数据的bitmap图像遮罩。CGLayerRef:用于表示可用于重复绘制(如背景)和幕后(offscreen)绘制的绘画层CGPatternRef:用于重绘图CGShadingRef、CGGradientRef:用于绘制渐变CGFunctionRef:用于定义回调函数,该函数包含一个随机的浮点值参数。当为阴影创建渐变时使用该类型CGColorRef, CGColorSpaceRef:用于告诉Quartz如何解释颜色CGImageSourceRef,CGImageDestinationRef:用于在Quartz中移入移出数据CGFontRef:用于绘制文本CGPDFDictionaryRef, CGPDFObjectRef, CGPDFPageRef, CGPDFStream, CGPDFStringRef, and CGPDFArrayRef:用于访问PDF的元数据CGPDFScannerRef, CGPDFContentStreamRef:用于解析PDF元数据CGPSConverterRef:用于将PostScript转化成PDF。在iOS中不能使用。

图形状态
Quartz通过修改当前图形状态(current graphics state)来修改绘制操作的结果。图形状态包含用于绘制程序的参数。绘制程序根据这些绘图状态来决定如何渲染结果。例如,当你调用设置填充颜色的函数时,你将改变存储在当前绘图状态中的颜色值。
Graphics Context包含一个绘图状态栈。当Quartz创建一个Graphics Context时,栈为空。当保存图形状态时,Quartz将当前图形状态的一个副本压入栈中。当还原图形状态时,Quartz将栈顶的图形状态出栈。出栈的状态成为当前图形状态。
可使用函数CGContextSaveGState来保存图形状态,CGContextRestoreGState来还原图形状态。
注意:并不是当前绘制环境的所有方面都是图形状态的元素。如,图形状态不包含当前路径(current path)。下面列出了图形状态相关的参数:

Current transformation matrix (CTM):当前转换矩阵Clipping area:裁剪区域Line: 线Accuracy of curve estimation (flatness):曲线平滑度Anti-aliasing setting:反锯齿设置Color: 颜色Alpha value (transparency):透明度Rendering intent:渲染目标Color space: 颜色空间Text: 文本Blend mode:混合模式

Quartz 2D 坐标系统
坐标系统定义是被绘制到Page上的对象的位置及大小范围,如图1-4所示。我们在用户空间坐标系统(user-space coordination system,简称用户空间)中指定图形的位置及大小。坐标值是用浮点数来定义的。

相关推荐

    CGcontext 2D画图 demo

    CGContext是iOS和macOS平台上的核心图形(Core Graphics)框架的一部分,用于2D绘图操作。这个"CGContext 2D画图 demo"是为初学者设计的,旨在教授如何利用CGContext进行基本的2D图形绘制。在这个教程中,我们将深入...

    使用CGContext画线

    本篇将深入探讨如何利用CGContext来画线,这是一个核心图形上下文对象,用于在各种图形表面,如屏幕、PDF文档或内存中的位图上进行绘制。 CGContext是所有Core Graphics绘图的基础,它维护了当前的绘图状态,如颜色...

    ios中的CGcontext

    在iOS开发中,`CGContext`是Core Graphics框架的核心部分,用于进行图形绘制。它是一个图形上下文,用于管理绘制操作,如线条、形状、颜色和图像等。以下是对`CGContext`常用方法的详细解释: 1. `CGContextRef ...

    CGContext绘制美国国旗 transform

    在iOS开发中,CGContext是Core Graphics框架的一部分,用于在位图或屏幕上下文中进行图形绘制。本教程将深入探讨如何使用CGContext绘制美国国旗,同时结合UIImageView和transform属性来控制图像的显示效果。 首先,...

    使用CGContext绘制时钟应用案例

    在iOS开发中,CGContext是Core Graphics框架的一部分,用于在位图或屏幕上下文中进行图形绘制。本案例中,"使用CGContext绘制时钟应用"是一个很好的实践项目,旨在教授开发者如何利用CGContext来创建一个实时显示...

    绘图之dome

    这个“绘图之dome”是一个关于如何使用图形上下文(CGContext)进行绘图的示例项目。让我们深入探讨一下CGContext以及如何使用它来实现路径绘图和基于上下文的绘图。 CGContext,全称为Core Graphics Context,是...

    一个电池的demo,利用CGContext实现,大小自适应

    这个"一个电池的demo,利用CGContext实现,大小自适应"项目是GitHub上的一个开源示例,作者liangmingzhe提供了如何用Core Graphics(简称CG)来绘制电池视图,并使其能够根据屏幕尺寸自动调整大小的代码。...

    iOS贝塞尔曲线

    iOS中的贝塞尔曲线(Bezier Curve)是一种在图形设计和计算机图形学中广泛使用的数学工具,它允许开发者创建平滑、连续的曲线路径。贝塞尔曲线由控制点定义,通过调整这些控制点,可以灵活地控制曲线的形状和弯曲度...

    ios-iOS画板.zip

    这个"ios-iOS画板.zip"压缩包提供了一个简单的代码示例,它演示了如何利用Core Graphics(简称CG)框架中的`CGContext`进行绘图。`CGContext`是Apple的图形上下文对象,它允许开发者在各种表面(如屏幕、PDF、图像等...

    iOS实现浮动泡泡功能

    在`drawRect:`方法中,我们可以使用`CGContext`来设置填充颜色、边框宽度和样式,以及添加阴影效果,使泡泡看起来更加立体。 接着,为了实现泡泡的浮动效果,我们需要使用`UIKit`框架中的`CADisplayLink`或`NSTimer...

    NVIDIA Cg 2.2 February 2010

    正文第一步:建立全局CGcontext实例 然后建立事件回调函数 具体参考main函数定义 myCgContext cgCreateContext ; CGcontext myCgContext; 第二步:在OnResetDevice中Initialization CG 一开始调用cgD3D9SetDevice ...

    CGDrawImage方法使用Demo

    这个方法接受三个参数:一个`CGContext`对象,用于绘制图像的矩形区域,以及一个`CGImage`对象,即要绘制的图像。它会在指定的矩形区域内绘制给定的图像,根据图像的大小和方向调整绘制。 二、CGContext `CGContext...

    ios速度表效果

    这可以通过在`draw(_ rect:)`方法中使用`CGContext.move(to:)`、`CGContext.addLine(to:)`以及`CGContext.strokePath()`来完成。刻度线的长度、间隔和样式可以根据需求调整。 4. **绘制指针**:指针是速度表的动态...

    IOS图片水印

    在添加水印的过程中,我们主要会用到`CGContext`,它是Core Graphics的主要绘图环境,用于在内存中或文件上进行绘图操作。 **一、文字水印** 1. **创建CGContext** 在添加文字水印前,我们需要创建一个`CGContext...

    自定义时钟控件 DDClock

    本教程将聚焦于创建一个自定义的时钟控件——DDClock,它使用了Core Graphics(CGContext)来绘制时钟界面。让我们深入探讨这个过程,了解如何利用iOS的图形上下文来构建这样的组件。 首先,我们要明白`CGContext`...

    iOS绘制不规则图形,并且添加点击事件

    在这些方法中,设置当前的上下文(`CGContext`),并使用`UIBezierPath`填充或描边图形。例如: ```objc - (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); [[UIColor ...

    ios-渐变趋势图.zip

    CGContext是Core Graphics的主要工作对象,它代表了一个图形上下文,用于绘制矩形、线条、图像以及更复杂的形状。在iOS中,我们通常在UIView的`draw(_:)`方法或者CALayer的`display()`方法中创建并使用CGContext,...

    MPWDrawingContext:CoreGraphics CGContext 的 Objective-C 包装器

    MPWDrawingContext,版本 0.3 围绕 CoreGraphics CGContextRef 的 Objective-C 包装器。 它包括 MPWDrawingContext 协议和通过调用 CoreGraphics CGContextRef 函数实现该协议的 MPWCGDrawingContext 类。...

    用core text绘制在一个CGContextRef

    作者hawk0620,源码PYQFeedDemo,1、绘制文本 使用core text可以将文本绘制在一个CGContextRef上,最后再通过UIGraphicsGetImageFromCurrentImageContext()生成图片,再将图片赋值给cell.contentView.layer,从而...

Global site tag (gtag.js) - Google Analytics