• IOS开发-画线画图


    1、绘图总结:

    绘图前设置:

    CGContextSetRGBFillColor/CGContextSetFillColorWithColor //填充色
    CGContextSetRGBStrokeColor/CGContextSetStrokeColorWithColor //笔颜色
    CGContextSetLineWidth //线宽度
    绘图后设置:

    注: 画完图后,必须 先用CGContextStrokePath来描线,即形状,后用CGContextFillPath来填充形状内的颜色.

    2.常见图形绘制:

    CGContextFillRect/CGContextFillRects
    CGContextFillEllipseInRect
    CGContextAddRect/CGContextAddRects
    CGContextAddEllipseInRect
    CGContextAddLines
    CGContextMoveToPoint
    CGContextAddLineToPoint
    3.常见控制方法:

    CGContextSaveGState
    CGContextRestoreGState
    4.创建内存图像context:

    CGBitmapContextCreate <-----CGContextRlease释放
    CGColorSpaceCreateWithName (KCGColorSpaceGenericRGB)
    CGColorSpaceRlease
    CGBitmapContextCreateImage() <-----CGImageRlease 释放.
    eg:
    CGContextRefMyCreateBitmapContext(intpixelsWide,intpixelsHigh)
    {
    CGContextRef context=NULL;
    CGColorSpaceRefcolorSpace;
    void* bitmapData;
    int bitmapByteCount;
    int bitmapBytesPerRow;
    bitmapBytesPerRow =(pixelsWide*4);
    bitmapByteCount =(bitmapBytesPerRow*pixelsHigh);
    colorSpace=CGColorSpaceCreateDeviceRGB();
    bitmapData=malloc(bitmapByteCount);
    if(bitmapData==NULL)
    {
    fprintf(stderr,"Memorynotallocated!");
    returnNULL;
    }
    context=CGBitmapContextCreate(bitmapData,
    pixelsWide, pixelsHigh, 8,
    bitmapBytesPerRow, colorSpace,
    kCGImageAlphaPremultipliedLast);
    if(context==NULL)
    {
    free(bitmapData);
    fprintf(stderr,"Contextnotcreated!");
    returnNULL;
    }
    CGColorSpaceRelease(colorSpace);
    returncontext;
    }
    5.图形的变换:

    CGContextTranslateCTM
    CGContextRotateCTM
    CGContextScaleCTM
    6.常用函数:

    CGRectContainsPoint();
    CGRectContainsRect();
    CGRectIntersectsRect();
    CGRectIntersection();
    CGPointEqualToPoint();
    CGSizeEqualToSize();
    7.从原图片中取小图.

    CGImageCreateWithImageInRect
    8.屏幕快照:

    #import "QuartzCore/QuartzCore.h"

    UIGraphicsBeginImageContext(yourView.frame.size);
    [[yourView layer] renderInContext:UIGraphicsGetCurrentContext()];
    UIImage*screenshot =UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    合并两张bit图到一张image的方法

    To graphically merge two images into a new image, you do something like this:
    UIImage *result = nil;
    unsignedchar *data = calloc(1,size.width*size.height*kBytesPerPixel);
    if (data != NULL)
    {
    // kCGImageAlphaPremultipliedLast 为预记录的#define value
    // 设置context上下文
    CGContextRef context = CGBitmapContextCreate(
    data, size.width, size.height, 8, size.width*kBytesPerPixel,
    CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedLast);
    if (context != NULL)
    {
    UIGraphicsPushContext(context);
    // Image 为下载的背景图片,用于比较context
    CGContextTranslateCTM(context, 0, size.height);
    CGContextScaleCTM(context, 1, -1);
    [image drawInRect:imageRect];
    [image2 drawInRect:image2Rect];
    UIGraphicsPopContext();
    CGImageRef imageRef = CGBitmapContextCreateImage(context);
    if (imageRef != NULL)
    {
    result = [UIImageimageWithCGImage:imageRef];
    CGImageRelease(imageRef);
    }
    CGContextRelease(context);
    }
    free(data);
    }
    return result;
    关键方法:

    CGContextRef context = CGBitmapContextCreate();
    CGContextTranslateCTM();
    CGContextScaleCTM();
    CGImageRef imageRef = CGBitmapContextCreateImage(context);
    CGImageRelease(imageRef);

  • 相关阅读:
    jQuery插件:用于获取元素自身的HTML内容
    自定义 Web 部件用户界面简介
    在MOSS2010中实现OU下的用户的上下级组织关系
    sharepoint2010人性化的地方--员工离职AD账号禁用(个人网站自动提醒上级经理功能)
    SharePoint2010文档归档策略(2)-从放置库转移到自己定义的文档库
    SharePoint2010文档归档策略
    如何用VS2010在SharePoint中创建自定义字段类型(以eWebEditor为例)
    如何实现SP文档库类似百度文档库的效果 (副标题:如何在SP2013文档库的SWF文件用FlexPager显示)
    查看SharePoint文档库是,显示层次目录,可以点击返回层次
    安装和配置SharePoint 2013 with SP1 Workflow
  • 原文地址:https://www.cnblogs.com/greywolf/p/2616458.html
Copyright © 2020-2023  润新知