Quartz2D

【绘图案例-介绍quartz2d Objective-C语言】 阅读详情

//画线

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextMoveToPoint(context, 100.f,100.f);

    CGContextAddLineToPoint(context, 200.f, 200.f);

    CGContextStrokePath(context);

//画折线

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGPoint lines[] =

    {

       CGPointMake(100.f,100.f),

       CGPointMake(200.f,30.f),

       CGPointMake(40.f,150.f),

       CGPointMake(70.f,400.f),

       CGPointMake(10.f,100.f),

       CGPointMake(100.f,10.f),

       CGPointMake(100.f,100.f),

    };

    CGContextAddLines(context, lines, sizeof(lines)/sizeof(lines[0]));

    CGContextStrokePath(context);

//画平行线(两个点一组,画多条线段)

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGPoint lines[] =

    {

       CGPointMake(10.f,200.f),

       CGPointMake(50.f,100.f),

       CGPointMake(90.f,200.f),

       CGPointMake(130.f,100.f),

       CGPointMake(170.f,200.f),

       CGPointMake(210.f,100.f),

    };

    CGContextAddLines(context, lines, sizeof(lines)/sizeof(lines[0]));

    CGContextStrokeLineSegments(context, lines, sizeof(lines)/sizeof(lines[0]));

    CGContextStrokePath(context);

//画矩形

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextAddRect(context, CGRectMake(20, 20, 100, 300));

    CGContextStrokePath(context);

//画多个矩形(可以话表格)

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextAddRect(context, CGRectMake(20, 20, 100, 300));

    CGRect rects[] = {

       CGRectMake(20,20, 30, 30),

       CGRectMake(40,20, 30, 30),

       CGRectMake(20,70, 20, 30),

       CGRectMake(80,20, 30, 10),

       CGRectMake(200,20, 70, 30),

    };

    CGContextAddRects(context, rects, sizeof(rects)/sizeof(rects[0]));

    CGContextStrokePath(context);

//画圆

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextAddEllipseInRect(context, CGRectMake(30, 30, 60, 30));

    CGContextStrokePath(context);

//画实心圆

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextBeginPath(context);

    CGRect circle = CGRectInset(self.bounds, 50, 50);

    CGContextAddEllipseInRect(context, circle);

    CGContextFillPath(context);

//画扇形

    CGContextRef context = UIGraphicsGetCurrentContext();

   //设置圆心点(不写为半弧形)

    CGContextMoveToPoint(context, 130, 130);

   //设置属性(扇形)扇形圆心坐标 XY 半径 起点角度 终点角度 画取方向(0=逆时针,1=顺时针)

    CGContextAddArc(context, 130,130, 70.f,-270, 180,1);

   //闭合

    CGContextClosePath(context);

   //实心

    CGContextFillPath(context);

   //空心

    CGContextStrokePath(context);

    //清除区域

    CGContextClearRect(context, CGRectMake(100,100, 80, 50));

//画渐变色

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGColorSpaceRef color = CGColorSpaceCreateDeviceRGB();

    UIColor *startColor = [UIColorblueColor];

    CGFloat *startColorComp = (CGFloat *)CGColorGetComponents(startColor.CGColor);

    UIColor *endColor = [UIColoryellowColor];

    CGFloat *endColorComp = (CGFloat*)CGColorGetComponents(endColor.CGColor);

    CGFloat colorComponents[8]= {

       startColorComp[0],

       startColorComp[1],

       startColorComp[2],

       startColorComp[3],

       endColorComp[0],

       endColorComp[1],

       endColorComp[2],

       endColorComp[3]

    };

    CGFloat colorIndices[2]= {

       0.f,

       1.f

    };

    CGGradientRef gradient = CGGradientCreateWithColorComponents(color,colorComponents, colorIndices, 2);

    CGContextDrawLinearGradient(context, gradient, CGPointMake(120,260), CGPointMake(200, 230), 0);

//设置阴影

CGContextSetShadow(context, CGSizeMake(20, 20), 20);

//绘位图

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextDrawImage(context, CGRectMake(100,100, 200,300), [UIImageimageNamed:@"096.jpg"].CGImage);

//绘字

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGFontRef font = CGFontCreateWithFontName((CFStringRef)@"Helvetica");

    CGContextSetFont(context, font);

    CGContextSetFontSize(context, 100.f);

    CGContextSetTextMatrix(context, CGAffineTransformMakeScale(1.0, -1.0));

    CGPoint points[] = {

       CGPointMake(150.f,-200.f)

    };

    CGGlyph glays[1]= {90};

    CGContextShowGlyphsAtPositions(context, glays,points,3);

    self.layer.shouldRasterize = YES;

Quartz 2D 裁剪 参考 使用Quartz 2D 可以对图片进行裁剪,简单的可以裁剪一个矩形,复杂的可以根据CGPath实现裁剪,也可以使用UIBezierPath进行裁剪,也可以使用一个UIImage做为mask进行裁剪。 对于如下图片,不使用裁剪时,显示全部内容 使用CGContextClipToRect裁剪矩形, UIImage* imageSrc = [UIImage imag 阅读详情

相关推荐

C#上位机与OneNET云平台数据交互实战——基于HTTP与JSON解析

本文详细介绍了使用C#开发上位机软件与OneNET物联网云平台进行数据交互的实战方法。通过构建HTTP请求、解析JSON数据,实现设备数据的实时获取、界面展示与本地存储,为工业监控与数据采集提供了一套完整高效的C#解决方案。

kkk56的博客 218

Quartz2D 的使用

Quartz2D 与 UIBezierPath 类似,用于绘制图像。 基本方法 在- (void)drawRect:(CGRect)rect 方法中进行绘制渲染。 // 获取上下文 CGContextRef contextRef = UIGraphicsGetCurrentContext(); // 线条宽度 CGContextSetLineWidth(c...

卖报的小行家 255

扩散模型在工业缺陷检测中的应用与优化

扩散模型作为生成式AI的重要分支,通过逐步去噪的逆向过程实现高质量数据生成。其核心U-Net架构结合残差连接和时间步嵌入,特别适合处理工业场景中的细微缺陷检测。在计算机视觉领域,这种技术突破了传统深度学习模型对小样本数据的限制,通过域自适应预训练和小样本微调两阶段框架,显著提升金属表面、纺织品等复杂场景的检测准确率。关键技术实现涉及噪声调度优化、多任务损失设计等工程实践,最终在MVTec AD等工业数据集上达到90%以上的检测精度,为智能制造提供可靠的自动化质检方案。

weixin_30512043的博客 497

iPhone之Quartz 2D系列--Quartz 2D概览(1)Overiew of Quartz 2D

Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境。我们可以使用Quartz 2D API来实现许多功能,如基本路径的绘制、透明度、描影、绘制阴影、透明层、颜色管理、反锯齿、PDF文档生成和PDF元数据访问。在需要的时候,Quartz 2D还可以借助图形硬件的功能。 在Mac OS X中,Quartz 2D可以与其它图形图像技术混合使用,如Core Image、Core Video、OpenGL、QuickTime。例如,通过使用 QuickTime的GraphicsImport

任海丽(3G/移动开发) 2431

Anomalib实战:从零开始构建自定义数据集的异常检测模型

本文详细介绍了如何使用Anomalib 2.1.0从零开始构建自定义数据集的异常检测模型。通过实战演示,指导读者准备符合规范的数据集结构,快速上手训练Patchcore等先进算法,并完成模型推理与调优,为工业质检、医疗影像等场景提供高效的视觉异常检测解决方案。

weixin_29165465的博客 109

Unity分包下载实战:AssetBundle+CDN+热更新全链路指南

分包下载是移动应用资源管理的核心技术,本质是将大体积安装包拆解为按需加载的独立资源单元,以解决用户安装意愿低、首屏启动慢、热更新不可控等关键问题。其底层依赖资源打包机制(如Unity AssetBundle)、全球分发网络(CDN)与安全热更新策略三者协同。AssetBundle提供资源隔离与依赖管理能力,CDN保障低延迟高可用下载,而热更新策略则决定版本控制、灰度发布与异常恢复的工程鲁棒性。该方案广泛应用于中重度游戏、大型工具类App及需要频繁内容迭代的商业项目,直接提升次日留存、过审成功率与用户在线时长

weixin_29762151的博客 353

Quartz 2D简介

什么是Quartz 2D? Quartz 2D是Apple的2D绘图引擎,是Core Graphics框架的重要组件。 您可能经常会看到Quartz 2D被称为Core Graphics或简称为CG。 Quartz 2D使用“画家的模型”。 在绘画者的模型中,每个连续的绘画操作将一层“绘画”应用于通常称为页面的输出“画布”。 可以将其想象为从事绘画工作的艺术家。 如果艺术家将整个画布涂成蓝...

Web design 教程小屋 472

原神真端,原神服务端,虚拟机启动部署傻瓜式教学

没玩过抽卡 游戏想体验一下抽卡的感觉,听说原神有真端了,所以弄一个局域网的服务体验一下,这里要感谢一些服务端的分享者。

azyouyouyou的博客 1万+

关于Quartz 2D绘图

    近期由于所做的任务中涉及Quartz 2D绘图方面的比较多,对Quartz 2D进行了一次深入的研究。Quartz主要就是一些函数,对象来进行对视图在内存中进行绘制,在将视图加入到当前视图中。    首先:获得所在的上下文以便将绘制好的视图加入到现在视图中从而显示。CGContextRef  Context=UIGraphicsGetCurrentContext();   2.颜色:Iphone中基本的颜色为红色,蓝色,绿色,还有透明度也是必备的。他们都是CGFloat类型的,且每个值只能在0到1中

chen154556138的专栏 1228

瑞芯微rv1126 rtsp+mpp+rga取流

瑞芯微rv1109 rtsp+mpp+rga取流

ZuoSeDiao的博客 6338

避开这5个坑!STC8H DMA串口通信的实战避坑指南(115200波特率实测)

本文深入解析了STC8H单片机利用DMA实现稳定全双工串口通信的实战要点。针对115200高波特率场景,详细拆解了DMA-UART架构、关键寄存器配置、时钟精度计算、缓冲区管理及中断协同等核心环节,并提供了具体的避坑指南和调试方法,帮助开发者构建高效可靠的通信链路。

melon的博客 675

Quartz2D简介

什么是Quartz2D Quartz 2D是一个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作 1.绘制图形:线条\三角形\矩形\圆\弧 2.绘制文字 3.绘制\生成文字 4.绘制\生成图片(图像) 5.读取\生成PDF 6.截图\裁剪图片 7.自定义UI控件 等等 Quartz 2D在iOS开发中的价值 为了便于搭建美观的UI界面,iOS提供了UIKit框架,里面...

weixin_44729579的博客 216

第一节:初识n8n与下一代工作流自动化

本章介绍了n8n的Fair-code理念与节点式架构,对比了其与Zapier/Make的核心差异,并引导读者在n8n Cloud上完成首次界面导览,建立了工作流自动化的宏观认知。

easeyoo的专栏 104

Quartz 2D Programming Guide

Quartz 2D Programming Guide 官方文档地址: https://developer.apple.com/library/ios/#documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/Introduction/Introduction.html ios开发讨论QQ群:186739796!验证信

程序人生 1768

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Quartz 2D

1.1 The Graphics Context所有的东西都是画在CGContextRef类型的对象上Quartz 2D中一些数据类型 CGPathRef:用于绘画的线 CGImageRef:一个矢量图片 CGLayerRef:一个绘画层,可以重复绘画和离屏绘画 CGPatternRef:用于重复绘画的 CGShadingRef和CGFrandientRef:用于渐变绘画 CGFunctionRef

xinxisxx的专栏 732

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Quartz 2D与CTM

一.Quartz 2D与CTM 1.Quartz 2D Quartz 2D是二维画图引擎,使用画笔模型( painter’s model ),每次画图操作都是在画布(canvas)上添加一层,称之为页(Page),后面画的页会覆盖前面画的页,所以要控制操作顺序。 Quartz 2D的操作目标是CGContextRef对象,CGContextRef是一种称之为图形上下文(graphics

起点 1251

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Quartz2D 应用

转载自:http://www.jianshu.com/p/49a6c91f342e Quartz2D 是什么? Quartz2D是一款苹果公司绘图工具类,用于绘制线条,矩形,扇形,圆等基本图形高级一点他可以绘制图片和文字,也可以通过各种组合绘制出华丽的图表,比如扇形,条形,折线形,也可以绘制出更复杂的图形,只要能想得到的二维形状,他都可以。而且一份代码允许同时运行在OX

逢个场,作个戏 361

Quartz 2D绘图简介

Quartz 2D绘图 简介 Quartz 2D是2D绘图引擎,适用iOS和Mac OS X程序。它提供底层轻量级的接口,并且会根据输出显示设备提供不匹配的逼真的画面  。Quartz 2D是与分辨率和设备无关的一个引擎。你不需要关注最终成像目标位置如何。非常容易使用,提供大量强大的功能,例如透明度,画线,视角距离效果渲染,颜色管理,反锯齿渲染,PDF文档创建,显示,解析。Quartz

ffblog的专栏 848

Quartz2D的使用

Quartz2D主要完成以下的一些简单的使用: 1.drawReect方法的使用 2.常见的图形的绘制:线条、多边形、圆 3.绘图状态的设置;文字的颜色、线宽等 4.图形上下文状态的保存与恢复(图形上下文栈) 5.图片的裁剪、截图 一、Quartz2D的简单介绍: Quartz 2D是一个二维绘图引擎,同时支持iOS和Mac OS X系统(跨平台,纯 C 语言的)

why_not_的专栏 1983

Quartz2D和CoreGraphic的关系

1.Quartz 2D是什么? Quartz 2D以PDF的规范为基础的图形库,用来绘制二维文字和图形,允许相同的绘图指令在任何装置上,使用可以得到的最佳分辨率,产生相同的输出. 2.Quartz2D能做什么? Quartz 2D API可以实现许多功能,如基于路径的绘图、透明度、阴影、颜色管理、反锯齿、PDF文档生成和PDF元数据访问等 3.Quartz2D和CoreGraphic什么关系 Qua

Kay的记录 1667

Quartz 2D Programming Guide

Quartz 2D Programming Guide 官方文档:Quartz 2D Programming Guide 译文: Quartz 2D编程指南(1) - 概览 Quartz 2D编程指南(2) - 图形上下文(Graphics Contexts) Quartz 2D编程指南(3) - 路径(Paths)【上】 Quartz 2D编程指南(3)...

a359798678的博客 140

Quartz 2D 概述

Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境。我们可以使用Quartz 2D API来实现许多功能,如基本路径的绘制、透明度、描影、绘制阴影、透明层、颜色管理、反锯齿、PDF文档生成和PDF元数据访问。在需要的时候,Quartz 2D还可以借助图形硬件的功能。在Mac OS X中,Quartz 2D可以与其它图形图像技术混合使用,如Core Image、...

aiqiangli4321的博客 112
上一篇: NSString / NSData / char* 类型之间的转换
下一篇: RTLable
D_origin
博客等级 码龄11年 0粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值