- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章iOS开发中Quartz2D绘图路径的使用以及条纹效果的实现由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
绘图路径 。
a.简单说明 在画线的时候,方法的内部默认创建一个path。它把路径都放到了path里面去。 1.创建路径 cgmutablepathref 调用该方法相当于创建了一个路径,这个路径用来保存绘图信息。 2.把绘图信息添加到路径里边。 以前的方法是点的位置添加到ctx(图形上下文信息)中,ctx 默认会在内部创建一个path用来保存绘图信息。 在图形上下文中有一块存储空间专门用来存储绘图信息,其实这块空间就是cgmutablepathref。 3.把路径添加到上下文中。 代码示例: 绘制一条直线的代码:
上面的代码和下面的代码是等价的.
b.直接使用path的好处: 第一种代码的阅读性不好,不便于区分。使用path,则一个path就代表一条路径。 比如:如果要在上下文中绘制多个图形,这种情况下建议使用path。 代码示例:
- (void)drawrect:(cgrect)rect { //1.获取图形上下文 cgcontextref ctx=uigraphicsgetcurrentcontext(),
。
//2.绘图 //2.a 画一条直线 //2.a.1创建一条绘图的路径 //注意:但凡通过quartz2d中带有creat/copy/retain方法创建出来的值都必须要释放 cgmutablepathref path=cgpathcreatemutable(); //2.a.2把绘图信息添加到路径里 cgpathmovetopoint(path, null, 20, 20); cgpathaddlinetopoint(path, null, 200, 300); //2.a.3把路径添加到上下文中 //把绘制直线的绘图信息保存到图形上下文中 cgcontextaddpath(ctx, path); //2.b画一个圆 //2.b.1创建一条画圆的绘图路径(注意这里是可变的,不是cgpathref) cgmutablepathref path1=cgpathcreatemutable(); //2.b.2把圆的绘图信息添加到路径里 cgpathaddellipseinrect(path1, null, cgrectmake(50, 50, 100, 100)); //2.b.3把圆的路径添加到图形上下文中 cgcontextaddpath(ctx, path1); //3.渲染 cgcontextstrokepath(ctx); //4.释放前面创建的两条路径 //第一种方法 cgpathrelease(path); cgpathrelease(path1); //第二种方法 // cfrelease(path); } 。
效果:
。
提示:如果是画线,那么就创建一条路径(path)用来保存画线的绘图信息,如果又要重新画一个圆,那么就可以创建一条新的路径来专门保存画圆的绘图信息。 注意: 但凡通过quarzt2d中带有creat/copy/retain方法创建出来的值都必须手动的释放 有两种方法可以释放前面创建的路径: (1)cgpathrelease(path); (2)cfrelease(path); 说明:cfrelease属于更底层的cocafoundation框架 ps:补充知识点: 画四边形的一些方法: 第一种方式:通过连接固定的点绘制四边形 第二种方式:指定起点和宽高绘制四边形 第三种方式:把第二种方式中的两步合并成一步。 第四种方式(oc的方法):绘制实心的四边形,注意没有空心的方法 第五种:画根线,设置线条的宽度(通过这种方式可以画斜的四边形) 代码示例:
// // yyview.m // 06-四边形的五种画法 // // created by apple on 14-6-11. // copyright (c) 2014年 itcase. all rights reserved. // 。
。
#import "yyview.h" 。
@implementation yyview 。
- (void)drawrect:(cgrect)rect { //获取图形上下文 cgcontextref ctx=uigraphicsgetcurrentcontext(); //第一种画法,通过连接固定的点绘制四边形 // cgcontextmovetopoint(ctx, 0, 20); // cgcontextaddlinetopoint(<#cgcontextref c#>, <#cgfloat x#>, <#cgfloat y#>); // cgcontextaddlinetopoint(<#cgcontextref c#>, <#cgfloat x#>, <#cgfloat y#>); // cgcontextaddlinetopoint(<#cgcontextref c#>, <#cgfloat x#>, <#cgfloat y#>); //第二种方式:指定起点和宽高绘制四边形 // cgcontextaddrect(ctx, cgrectmake(20, 20, 200, 100)); // //渲染 // cgcontextstrokepath(ctx); //第三种方式:二种的两步合并成一步。 //画空心的四边形 // cgcontextstrokerect(ctx, cgrectmake(20, 20, 200, 100)); // //画实心的四边形 // cgcontextfillrect(ctx, cgrectmake(20, 20, 200, 100)); //第四种方式(oc的方法):绘制实心的四边形,注意没有空心的方法 uirectfill(cgrectmake(20, 20, 200, 100)); //第五种方式:画根线,设置线条的宽度(通过这种方式可以画斜的四边形) // cgcontextmovetopoint(ctx, 20, 20); // cgcontextaddlinetopoint(ctx, 100, 200); // cgcontextsetlinewidth(ctx, 50); // //注意,线条只能画成是空心的 // cgcontextstrokepath(ctx); } @end 。
第五种方法可以画斜的四边形.
。
。
信纸条纹 1、前导程序 。
新建一个项目,在主控制器文件中实现以下几行代码,就能轻松的完成图片在视图中的平铺.
#import "yyviewcontroller.h" 。
。
@interface yyviewcontroller () 。
@end 。
@implementation yyviewcontroller 。
- (void)viewdidload { [super viewdidload],
uiimage *image=[uiimage imagenamed:@"me"]; uicolor *color=[uicolor colorwithpatternimage:image]; self.view.backgroundcolor=color; } 。
@end 。
效果:
。
2、实现信纸条纹的效果 。
利用上面的这种特性来做一个信纸的效果。 默认的view上没有分割线,要在view上加上分割线有两种方式: (1)让美工做一张专门用来做背景的图片,把图片设置为背景。缺点:信的长度不确定,所以背景图片的长度也难以确定。 (2)通过一张小的图片来创建一个颜色,平铺实现背景效果。 第一步:生成一张以后用以平铺的小图片。 画矩形。 画线条。 第二步:从上下文中取出图片设置为背景。黑乎乎一片?(其他地方时透明的,控制器的颜色,如果不设置那么默认为黑色的) 实现代码:
// // yyviewcontroller.m // 01-信纸条纹 // // created by 孔医己 on 14-6-11. // copyright (c) 2014年 itcast. all rights reserved. // 。
。
#import "yyviewcontroller.h" 。
@interface yyviewcontroller () 。
@end 。
。
@implementation yyviewcontroller 。
。
- (void)viewdidload { [super viewdidload],
// 1.生成一张以后用于平铺的小图片 cgsize size = cgsizemake(self.view.frame.size.width, 35); uigraphicsbeginimagecontextwithoptions(size , no, 0); // 2.画矩形 cgcontextref ctx = uigraphicsgetcurrentcontext(); cgfloat height = 35; cgcontextaddrect(ctx, cgrectmake(0, 0, self.view.frame.size.width, height)); [[uicolor whitecolor] set]; cgcontextfillpath(ctx); // 3.画线条 cgfloat linewidth = 2; cgfloat liney = height - linewidth; cgfloat linex = 0; cgcontextmovetopoint(ctx, linex, liney); cgcontextaddlinetopoint(ctx, 320, liney); [[uicolor blackcolor] set]; cgcontextstrokepath(ctx); uiimage *image=uigraphicsgetimagefromcurrentimagecontext(); uicolor *color=[uicolor colorwithpatternimage:image]; self.view.backgroundcolor=color; } 。
@end 。
效果:
。
3、应用场景 。
完成一个简陋的电子书阅读器 。
代码:
// // yyviewcontroller.m // 01-信纸条纹 // // created by 孔医己 on 14-6-11. // copyright (c) 2014年 itcast. all rights reserved. // 。
。
#import "yyviewcontroller.h" 。
@interface yyviewcontroller () 。
@property (weak, nonatomic) iboutlet uitextview *textview; - (ibaction)perbtnclick:(uibutton *)sender; - (ibaction)nextbtnclick:(uibutton *)sender; @property(nonatomic,assign)int index; @end 。
。
@implementation yyviewcontroller 。
。
- (void)viewdidload { [super viewdidload],
// 1.生成一张以后用于平铺的小图片 cgsize size = cgsizemake(self.view.frame.size.width, 26); uigraphicsbeginimagecontextwithoptions(size , no, 0); // 2.画矩形 cgcontextref ctx = uigraphicsgetcurrentcontext(); cgfloat height = 26; cgcontextaddrect(ctx, cgrectmake(0, 0, self.view.frame.size.width, height)); [[uicolor browncolor] set]; cgcontextfillpath(ctx); // 3.画线条 cgfloat linewidth = 2; cgfloat liney = height - linewidth; cgfloat linex = 0; cgcontextmovetopoint(ctx, linex, liney); cgcontextaddlinetopoint(ctx, 320, liney); [[uicolor blackcolor] set]; cgcontextstrokepath(ctx); uiimage *image=uigraphicsgetimagefromcurrentimagecontext(); uicolor *color=[uicolor colorwithpatternimage:image]; //self.view.backgroundcolor=color; self.textview.backgroundcolor=color; } 。
- (ibaction)perbtnclick:(uibutton *)sender { self.index--; self.textview.text=[nsstring stringwithformat:@"第%d页",self.index]; catransition *ca = [[catransition alloc] init]; ca.type = @"pagecurl"; [self.textview.layer addanimation:ca forkey:nil]; } 。
- (ibaction)nextbtnclick:(uibutton *)sender { self.index++; self.textview.text=[nsstring stringwithformat:@"第%d页",self.index]; catransition *ca = [[catransition alloc] init]; ca.type = @"pagecurl"; [self.textview.layer addanimation:ca forkey:nil]; } @end 。
storyboard中的界面布局 。
。
实现的简单效果:
最后此篇关于iOS开发中Quartz2D绘图路径的使用以及条纹效果的实现的文章就讲到这里了,如果你想了解更多关于iOS开发中Quartz2D绘图路径的使用以及条纹效果的实现的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在尝试编写一个函数来制作绘图并将其自动保存到文件中。 我努力用它来动态地做的技巧[plotname=varname & filename=varname &], 并使其与从循环中调用它兼容。 #
有人可以帮助我如何在绘图条形图中添加“下拉”菜单。 我在以下链接 ( https://plot.ly/python/v3/dropdowns/ ) 上找到了一些信息,但我正在努力调整代码,因此下拉选项
我不确切知道如何表达这一点,但我本质上希望根据其他数据之前的列值将数据分组为 Excel 图的系列。例如: size weight apple 3 35 orange 4
我正在为出版物创建图表并希望它们具有相同的字体大小。 当我用多图创建图形时,字体大小会减小,即使我没有更改tiff() 分辨率或pointsize 参数。我根据最终适合的地 block 数量增加了图形
我用 glm::perspective(80.0f, 4.0f/3.0f, 1.0f, 120.0f);并乘以 glm::mat4 view = glm::lookAt( glm::vec3(
我在 Shiny UI 中有一个情节。如果我更改任何输入参数并且通过 react 性图将会改变。但是让我们考虑以下情况:- Shiny UI 中的绘图可以说股票的日内价格变动。为此,您查询一些实时数据
我对 R 有点陌生。我在以下两个线程中跟踪并实现了结果: http://tolstoy.newcastle.edu.au/R/e17/help/12/03/7984.html http://lukem
我想在 WPF 控件中使用 GDI+ 绘图。 最佳答案 有多种方法可以做到这一点,最简单的方法是锁定您使用 GDI 操作的位图,获取像素缓冲区(从锁定中获取的 BitmapData 中的 Scan0
如何在以下取自其网站的绘图示例中隐藏颜色条? df % layout(title = '2014 Global GDPSource:CIA World Factbook',
我有两列数据,X 和 Y,每个条目在两个向量的小数点后都有 4 位数据。 当我使用 plot(x,y) 绘制简单图时,轴上显示的数据精确到小数点后两位。如何在两个轴上将其更改为小数点后 4 位精度?
我目前正在使用 Canvas 处理 JavaFX-Drawing-Application。在 GraphicsContext 的帮助下,我使用 beginPath() 和 lineTo() 方法绘制线
如果这个问题已经得到解答,但我无法找到我需要的东西,我提前道歉。我想从名为 data1.dat、data2.dat 的文件中绘制一些结果......我设法通过循环导入数据,但我无法使用循环绘制结果。仅
我的 pandas 数据框中有一个功能,可以(可能)具有多个级别。我可以使用以下方法获得独特的级别: reasons = df["Reason"].unique() 我可以通过执行以下操作在单个图表上
我在 Ubuntu 14 和 Windows 7(均为 64 位)中用 Python 绘制结果时遇到问题。作为一个简单的比较,我做了: from tvb.simulator.lab import *
以下代码相当简单 - 它用随机选择的像素填充设计表面 - 没什么特别的(暂时忽略第二种方法中的 XXXXXXX)。 private void PaintBackground() { Rando
我正在尝试制作一个绘制函数图形的 swing 应用程序(现在很简单,例如 x+2)但我在根据屏幕坐标制作我的点的数学坐标时遇到问题。我希望它在我的图表中简单地画一条从 P1(0,1) 到 P2(1,2
编辑 4:问题的新格式 背景:我有一个扩展 JFrame 的类 Window,在 JFrame 中我有一个 Canvas 。我向 Canvas 添加自定义对象。这个对象的唯一目的(为了争论)是在 Ca
我需要为即将到来的锦标赛标记阶梯,但我找不到任何方法来语义标记它。到目前为止我看到的唯一方法是 mark it up as a table ,我想不惜一切代价避免这种情况。 有什么想法吗? 最佳答案
我目前正在为一个小型 uC 项目编写 UI。在计算垂直线的位置时遇到一些问题。这个想法是将红线沿 x 轴移动到矩形的末端。 使用无限旋转编码器递增的值,范围为 0 到 800,增量为 1。矩形的左侧是
我正在尝试绘制光分布图。我想准确地执行此问题的第一步所要求的:Statistical analysis on Bell shaped (Gaussian) curve . 现在我有一组值。我希望数组元
我是一名优秀的程序员,十分优秀!