美文网首页
Graphics Context

Graphics Context

作者: winnisz | 来源:发表于2017-03-14 18:07 被阅读0次

    Graphics Context定义了基本的绘制属性,如颜色、裁减区域、线条宽度和样式信息、字体信息、混合模式

    Quartz2D是C语言的框架,并且部分需要自己管理内存:

    •使用含有“Create”或“Copy”的函数创建的对象,使用完后必须释放,否则将导致内存泄露

    •使用不含有“Create”或“Copy”的函数获取的对象,则不需要释放

    •如果retain了一个对象,不再使用时,需要将其release掉。可以使用Quartz 2D的函数来指定retain和release一个对象。例如,如果创建了一个CGColorSpace对象,则使用函数CGColorSpaceRetain和CGColorSpaceRelease来retain和release对象。也可以使用Core Foundation的CFRetain和CFRelease。注意不能传递NULL值给这些函数

    ----------------------------------

    CIFilter :输出一个CIImage,使用键值对对输入的图像设置参数

    CIContext

    CIImage

    CGImageRef

    overview  and tasks

    CIContext *context = [CIContext contextWithOptions:nil];

    CIImage *inputImage = [[CIImage alloc] initWithImage:[UIImage imageNamed:@"365.jpg"]];

    // create gaussian blur filter

    CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];

    [filter setValue:inputImage forKey:kCIInputImageKey];

    [filter setValue:[NSNumber numberWithFloat:0.0] forKey:@"inputRadius"];

    // blur image

    CIImage *result = [filter valueForKey:kCIOutputImageKey];

    CGImageRef cgImage = [context createCGImage:result fromRect:blurFrame];

    UIImage *image = [UIImage imageWithCGImage:cgImage];

    CGImageRelease(cgImage);

    bgView.image = image;

    ----------------------------------

    我们可以通过animationWithKeyPath键值对的方式来改变动画

    animationWithKeyPath的值:

    transform.scale = 比例轉換

    transform.scale.x = 闊的比例轉換

    transform.scale.y = 高的比例轉換

    transform.rotation.z = 平面圖的旋轉

    opacity = 透明度

    margin

    zPosition

    backgroundColor

    cornerRadius

    borderWidth

    bounds

    contents

    contentsRect

    cornerRadius

    frame

    hidden

    mask

    masksToBounds

    opacity

    position

    shadowColor

    shadowOffset

    shadowOpacity

    shadowRadius

    ----------------------------------

    转换

    变换操作函数概览

    如何修改CTM

    如何创建一个仿射变换

    如何选择两个相同的变换

    如何获取user-to-device-space变换

    旋转、平移、缩放CTM。我们还可以联结一个仿射变换矩阵?

    创建仿射变换

    Quartz also allows you to create affine transforms that don’t operate on user space until you decide to apply the transform to the CTM. You use another set of functions to create affine transforms, which can then be concatenated with the CTM.

    使用的每个变换操作都更新了CTM

    CTM总是用于表示用户空间和设备空间的当前映射关系

    在变换CTM之前,我们需要保存图形状态

    仿射矩阵来联结CTM?

    ----------------------------------

    quartz guide ————

    graphics contexts

    path—shapes or subpaths,创建跟绘画是分离的任务。创建各种矢量图形

    Color and Color Spaces ----如何翻译颜色

    Transforms----CGAffineTransform

    patterns--画重复的图形

    shadows

    transparency layers

    bitmap image and image masks

    core graphics layer drawing

    the identity matrix--单位矩阵

    平移矩阵 缩放矩阵 旋转矩阵---逆时针方向

    矩阵乘法是不可交换的

    Thus we need the extra column containing the constant values.

    对另一个矩阵乘以一个矩阵,矩阵的列数必须匹配的行数

    这意味着2 x 3矩阵不能乘以2 x 3矩阵。因此我们需要额外的列包含常量值。

    ----------------------------------

    graphics state-----The popped state becomes the current graphics state,在current graphics state

    arameters Discussed in this chapter

    Current transformation matrix (CTM) Transforms

    Clipping area Paths

    Line: width, join, cap, dash, miter limit Paths

    Accuracy of curve estimation (flatness) Paths

    Anti-aliasing setting Graphics Contexts

    Color: fill and stroke settings Color and Color Spaces

    Alpha value (transparency) Color and Color Spaces

    Rendering intent Color and Color Spaces

    Color space: fill and stroke settings Color and Color Spaces

    Text: font, font size, character spacing, text drawing mode Text

    Blend mode Paths and Bitmap Images and Image Masks

    ----------------------------------

    ellipses 椭圆

    CGContextAddEllipseInRect-----rect 内画椭圆

    curve 曲线

    CGContextAddQuadCurveToPoint-----起点,控制点,终点,二次曲线

    CGContextAddCurveToPoint-------贝塞尔曲线,三次曲线,两个控制点

    arcs 圆弧---两个点的相切线确定一个弧--If the current path already contains a subpath, Quartz appends a straight line segment from the current point to the starting point of the arc. If the current path is empty, Quartz creates a new subpath at the starting point for the arc and does not add the initial straight line segment.

    The function CGContextAddArc creates a curved segment from a circle. You specify the center of the circle, the radius, and the radial angle (in radians). You can create a full circle by specifying a radial angle of 2 pi.

    (圆心,半径,弧度起点,弧度终点,顺逆时针)

    the function CGContextAddArcToPoint is ideal to use when you want to round the corners of a rectangle. Quartz uses the endpoints you supply to create two tangent lines. You also supply the radius of the circle from which Quartz slices the arc. The center point of the arc is the intersection of two radii, each of which is perpendicular to one of the two tangent lines. Each endpoint of the arc is a tangent point on one of the tangent lines

    ( 切线一从起点至第一个end point , 切线二:从第一个end point 至 第二个 end point , 根据半径画圆 )

    ----------------------------------

    相关文章

      网友评论

          本文标题:Graphics Context

          本文链接:https://www.haomeiwen.com/subject/jughnttx.html