画图基础功能的详解
来源:互联网 发布:mac系统下载office 编辑:程序博客网 时间:2024/06/07 19:20
CGContextMoveToPoint 开始画线
CGContextAddLineToPoint 画直线
CGContextAddEllipseInRec
CGContextSetLineCap 设置线条终点形状
CGContextSetLineDash 画虚线
CGContextAddRect 画一方框
CGContextStrokeRect 指定矩形
CGContextStrokeRectWithW
CGContextStrokeLineSegme
CGContextAddArc 画已曲线 前俩店为中心 中间俩店为起始弧度 最后一数据为0则顺时针画 1则逆时针
CGContextAddArcToPoint(context,0,0, 2, 9, 40);//先画俩条线从point 到 弟1点, 从弟1点到弟2点的线
CGContextSetShadowWithCo
CGContextSetRGBFillColor
CGContextSetRGBStrokeCol
CGContextSetFillColorSpa
CGConextSetStrokeColorSp
CGContextFillRect 补充当前填充颜色的rect
CGContextSetAlaha 透明度
CGContextTranslateCTM 改变画布位置
CGContextSetLineWidth 设置线的宽度
CGContextAddRects 画多个线
CGContextAddQuadCurveToP
CGContextDrawPath 设置绘制模式
CGContextClosePath 封闭当前线路
CGContextTranslateCTM(context, 0,rect.size.height);
CGContextSetInterpolatio
CGImageCreateWithImageIn
字符串的写入可用
对图片放大缩小的功能就是慢了点
CGColorGetComponents() 返回颜色的各个直 以及透明度 可用只读const float来接收
画图片 CGImageRef image=CGImageRetain(img.CGImage);
实现逐变颜色填充方法 CGContextClip(context);
注:
填充一个路径的时候,路径里面的子路径都是独立填充的。
假如是重叠的路径,决定一个点是否被填充,有两种规则
1,nonzero winding numberrule:非零绕数规则,假如一个点被从左到右跨过,计数器+1,从右到左跨过,计数器-1,最后,如果结果是0,那么不填充,如果是非零,那么填充。
2,even-odd rule:奇偶规则,假如一个点被跨过,那么+1,最后是奇数,那么要被填充,偶数则不填充,和方向没有关系。
Description
设置当一个颜色覆盖上另外一个颜色,两个颜色怎么混合
默认方式是
result = (alpha * foreground) + (1 - alpha) * background
CGContextSetBlendMode :设置blend mode.
CGContextSaveGState :保存blend mode.
CGContextRestoreGState:在没有保存之前,用这个函数还原blend mode.
CGContextSetBlendMode 混合俩种颜色
http://www.cocoachina.com/bbs/read.php?tid=75122&page=1
================================================================
虚线
画虚线需要用到函数:
CGContextSetLineDash
此函数需要四个参数:
- context
– 这个不用多说 - phase
- 稍后再说 - lengths
– 指明虚线是如何交替绘制,具体看例子 - count
– lengths数组的长度
- CGContextRef
context =UIGraphicsGetCurrentCont ext(); - CGContextBeginPath(context);
- CGContextSetLineWidth(context,
2.0); - CGContextSetStrokeColorW
ithColor(context, [UIColorwhiteColor].CGColor); - float
lengths[] = {10,10}; - CGContextSetLineDash(context,
0, lengths,2); - CGContextMoveToPoint(context,
10.0, 20.0); - CGContextAddLineToPoint(context,
310.0,20.0); - CGContextStrokePath(context);
- CGContextClosePath(context);
lengths的值{10,10}表示先绘制10个点,再跳过10个点,如此反复,如图:
如果把lengths值改为{10, 20,10},则表示先绘制10个点,跳过20个点,绘制10个点,跳过10个点,再绘制20个点,如此反复,如图:
注意count的值等于lengths数组的长度
phase参数表示在第一个虚线绘制的时候跳过多少个点,举例说明:
- float
lengths[] = {10,5}; - CGContextSetLineDash(context,
0, lengths, 2); - CGContextMoveToPoint(context,
0.0, 20.0); - CGContextAddLineToPoint(context,
310.0, 20.0); - CGContextStrokePath(context);
-
- CGContextSetLineDash(context,
5, lengths, 2); - CGContextMoveToPoint(context,
0.0, 40.0); - CGContextAddLineToPoint(context,
310.0, 40.0); - CGContextStrokePath(context);
-
- CGContextSetLineDash(context,
8, lengths, 2); - CGContextMoveToPoint(context,
0.0, 60.0); - CGContextAddLineToPoint(context,
310.0, 60.); - CGContextStrokePath(context);
由于lengths值为{10,5},第一条线就是绘制10,跳过5,反复绘制。
第二条线的phase值为5,则首先绘制【10减去5】,再跳过5,绘制10,反复绘制。
第三条给也如此,先绘制2,再跳过5,如此反复。
CGContextSetStrokeColorW
CGContextSetLineDash (myContext,phase,lengths,2);
CGContextClosePath(myContext);
CGContextStrokePath(myContext);
================================================================
切线
- (void)drawRect:(CGRect)rect {
}
================================================================
- (void)drawRect:(CGRect)rect {
}
================================================================
- (void)drawRect:(CGRect)rect {
}
================================================================
- (void)drawRect:(CGRect)rect {
}
================================================================
- (void)drawRect:(CGRect)rect {
}
- 画图基础功能的详解
- QT基础(三)----QPainter画图功能 & 画图小项目
- GDI 画图的基础函数
- EA画图的基础总结
- 画图功能
- GDI +实现的上传图片画图功能
- matlab 画图的一些小功能
- R语言的graphics功能(画图)
- canvas实现简单的画图功能
- Opencv3中画图功能详解(C++实现,python说明)
- 12864 实现画图功能
- c#实现画图功能
- OpenCV基本画图功能
- Python画图功能学习
- [转]JpGraph简介 --功能超级强大的PHP画图库
- [转]JpGraph简介 --功能超级强大的PHP画图库
- [转]JpGraph简介 --功能超级强大的PHP画图库
- JpGraph简介 --功能超级强大的PHP画图库
- 转一个备用
- matlab实用程序(四)
- 漫谈如何学习操作系统原理
- 学习&计划
- 快速入门SaltStack
- 画图基础功能的详解
- MySql的基本命令
- oracle归档日志写满错误解决方法
- 【Educational Codeforces Round 10E】【双连通分量缩环 BFS】Pursuit For Artifacts ★
- 线程间通信 wait() notify()
- WebMagic爬虫案例
- 编写自己的CORDIC IP CORE
- gcc 编译总结
- 最常用的PHP正则表达式收集整理