首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS开发CoreGraphics核心图形框架之二——深入理解图形上下文

需要注意,绘制顺序在CoreGraphics框架中十分重要,如果后绘制内容和先绘制内容有位置冲突,后绘制内容将覆盖绘制内容。    ...4.图层上下文:用于将内容绘制在Layer图层上。 5.打印上下文:使用Mac打印功能,此上下文用于将内容绘制在打印输出源上。...); UIKIT_EXTERN void UIRectFill(CGRect rect); //下面这两个方法用于向当前图形上下文中绘制矩形边框 UIKIT_EXTERN void UIRectFrameUsingBlendMode...//进行矩形区域边框绘制 void CGContextStrokeRect(CGContextRef cg_nullable c, CGRect rect); //进行矩形区域边框绘制 可以设置边框宽度...(CGContextRef cg_nullable c, CGRect rect); //进行虚线区域边框绘制 void CGContextStrokeEllipseInRect(CGContextRef

2.6K20

iOS动画-CALayer基础知识

这似乎很酷,但惊喜之余,我们也发现了仍然存在小缺憾,那就是此时图片显示效果是变形;那它是否也可以像UIImageView一样具有可设置方法呢,答案是肯定,我们可以使用如下代码,将图片自适应显示...contentsRect (CGRect) 允许在图层边框显示寄宿图一个子域 contentCenter (CGRect) 定义一个固定边框和一个在图层上可拉伸区域 三、UIView方法绘制自定义寄宿图...主动绘制 我们需要显式调用-display方法;这不同于UIView,当图层显示到屏幕上,CALayer不会自动重绘它内容,CALayer把重绘决定权交给了开发者; 2.绘制特点 尽管没有使用...绘制逻辑; 使用总结:当我们需要自定义寄宿图,其实不必实现displayLayer:和-drawLayer: inContext:方法来绘制寄宿图。...)rect toView:(nullable UIView *)view; - (CGRect)convertRect:(CGRect)rect fromView:(nullable UIView *)

1.8K50
您找到你想要的搜索结果了吗?
是的
没有找到

ios 图像处理

kCGPathFill,//只有填充(非零缠绕数填充),不绘制边框  kCGPathEOFill,//奇偶规则填充(多条路径交叉,奇数交叉填充,偶交叉不填充) kCGPathStroke,       ...// 只有边框  kCGPathFillStroke,    // 既有边框又有填充  kCGPathEOFillStroke  // 奇偶填充并绘制边框  // 封闭当前线路 CGContextClosePath...UIBezierPath 对象 + (instancetype)bezierPathWithRect:(CGRect)rect; 通过一个指定矩形中椭圆形, 创建并且返回一个新 UIBezierPath...然而当我们 * 希望以最小消耗去绘制一个临时曲线, 我们也许会临时增 * 大这个值, 来获得更快渲染速度. */ usesEvenOddFillRule -> //是否使用基偶填充规则 /**...  * 设置为 NO,  则路径将会使用 非零规则 (non-zero) 规则进行填充.   */ 奇偶原则: 从路径覆盖范围内任意一点做一条射线(确保这条射线长度要比路径覆盖范围要大) , 如果与该射线相交数量为奇数

1.6K30

iOS学习——Quartz2D学习之UIKit绘制

rect),填充矩形函数  - UIRectFrame(CGRect rect),矩形描边函数  - UIBezierPath,绘制常见路径类,包括险段、渐变、阴影、反锯齿等高级特性支持还是不及Quartz...使用形式如下: - (void)drawRect:(CGRect)rect { NSString *str = @"打印信息 打印信息"; NSMutableDictionary...drawInRect:(CGRect *)rect:在指定rect区域内绘制整张图片,图片会按照指定区域宽高进行缩放,所以这种方式一定可以显示完整图片,但是会进行一些缩放。...drawAsPatternInRect:(CGRect *)rect:在指定rect区域内平铺图片,如果一张图片不够用,则会在剩下地方重新放置该图片,图片大小尺寸不会改变。...UIRectFill(rect);快速用矩形去填充一个区域 UIRectFrame(rect);快速绘制一个矩形边框  10、用UIKit裁剪一个区域 UIRectClip(CGRectMake

1.5K20

SwiftUI:自定义 Shape 使用 InsettableShape 协议实现向内绘制边框

您在这里看到是SwiftUI在形状周围绘制边框方式副作用。如果您递给某人一个圆铅笔轮廓,并要求他们用粗笔在该圆上画线,他们将绘制出该圆精确线——大约一半笔在该线内部,一半在该线外部。...这就是SwiftUI为我们所做,但是当形状到达屏幕边缘,则意味着边框外部最终超出了屏幕边缘。...:我们所有边框都是可见,因为Swift在圆内部绘制而不是将圆作为绘制中心。...添加到inset允许我们在需要多次调用inset(by :),例如,如果我们想手动调用一次,则使用strokeBorder()。...,这在圆弧情况下意味着我们应使用它减小绘制半径。

1.7K40

YYText 源码剖析:CoreText 与异步绘制

YYText 核心思路:在异步线程创建图形上下文,然后利用 CoreText 绘制富文本,利用 CoreGraphics 绘制图片、阴影、边框等,最后将绘制完成位图放到主线程显示。 ?...在该类中有数个静态函数作为回调,比如当回调GetAscentCallback()函数,将持有对象ascent属性作为返回值。...图中蓝色填充区域即为实际绘制区域pathBox,绘制区域总大小应该是蓝色边框覆盖范围(请忽略线与线之间小缝隙)。借助CGRectInset(...)...6、line 截断 当富文本超过限制,可能需要对最后一行可显示行末尾做一个省略号:aaaa...。...五、异步绘制 上面介绍了几种特殊自定义富文本属性,对于其它自定义属性,基本上都是使用 CoreGraphics API 绘制,比如边框、阴影等,当然 CoreText 自带有很多效果,YYText

3.9K30

OC绘制基本图形1. UIKit中封装了一些最常用绘图方法2. 贝塞尔路径常用方法列表(BezierPath)3. 保存屏幕截图,并存储至相册

利用这种方法也可以画圆 在渲染时候,会自动关闭路径。 - (void)drawRect:(CGRect)rect { // 绘制扇形。参数:1,圆点坐标。参数2:半径。...超出view 区域就不再显示了。...使用drawAtPoint进行绘制 有多大就绘制多大,不做任何压缩、拉伸 使用drawAsPatten进行绘制 如果图片比区域小,会进行平铺;如果图片比区域大,有多少绘制多少 - (void)drawRect...保存屏幕截图,并存储至相册 开启一个图形context。开启就别忘了关闭。 iOS8.0 以后还需要获得用户许可权限。之前iOS不需要。 在plist中设置申请用户许可提示文字。...以及如何使用它们来绘制动态进度条等等

1.5K40

图层树和寄宿图 -- iOS Core Animation 系列一

但是有时候我们只使用UIView还是会有些捉襟见肘,CALayer暴露了一些UIView没有提供功能: 阴影、圆角、边框 3D变换 非矩形范围 透明遮罩 非线性动画 ---- 2.寄宿图 2.1...虽然可以实现类似UIImageView显示效果,但平常并不推荐使用这种方法。...平时使用UIImageView遇到类似情况,可以设置contentMode来解决。...2.1.5 contentsRect CALayercontentsRect属性允许我们在图层边框显示寄宿图一个子域。和bounds、frame不同,contentsRect不是按点来计算。...因为当图层显示在屏幕上,CALayer不会自动重绘,这和UIView不同。需要手动调用。 我们没有调用masksToBounds。但是绘制圆仍然被裁剪了。

1.2K20

使用Quartz2D进行绘图1. Quartz2D2. 绘制基本图形

当view第一次显示到屏幕上(加到UIWindow上显示出来) 重绘时候:调用viewsetNeedsDisplay或者setNeedsDisplayInRect: 1.3 Graphics...当用 Quartz 绘图,所有设备相关特性都包含在Graphics Context 中。通过给Quartz 指定不同 Graphics Context,就可将相同图像绘制到不同设备上。...rectrect就是绘图viewbounds - (void)drawRect:(CGRect)rect { //1.获取图形上下文对象 CGContextRef ctx =...内存泄漏静态分析工具 1.4.3 使用Path 对象内存管理问题 使用Path对象时候,一定要注意内存问题,一定要注意内存释放。...绘制基本图形 好了,坐好了,老司机开始开车啦~ 2.1 绘制三角形 - (void)drawRect:(CGRect)rect { // 获取context CGContextRef ctx

58450

Quartz2D实战-画板工具

void)drawRect:(CGRect)rect调用时机: 当view第一次显示到屏幕上(被加到UIWindow上显示出来) 调用viewsetNeedsDisplay或者setNeedsDisplayInRect...: 图形上下文(Graphics Context) 保存绘图信息、绘图状态 决定绘制输出目标(绘制到什么地方去?)...(输出目标可以是PDF文件、Bitmap或者显示窗口上) 相同一套绘图序列,指定不同Graphics Context,就可将相同图像绘制到不同目标上 绘制图形会保存到图像上下文中去,图像上下文中绘制图像又会显示在我们指定输出目标当中...(CGContextRef c) Quartz2D内存管理 使用含有“Create”或“Copy”函数创建对象,使用完后必须释放,否则将导致内存泄露 使用不含有“Create”或“Copy”函数获取对象...实现- (void)drawRect:(CGRect)rect方法 - (void)drawRect:(CGRect)rect { for (ZJBezierPath *path in

42540

iOS开发CoreAnimation解读之二——对CALayer分析

MyView对象,layer层背景色就是红色了。...,它可以分为两个方面: 1.不改变内容原始大小 这种模式中不会改变内容原始大小,如果层尺寸小于内容尺寸,则内容会被切割,如果层尺寸大于内容尺寸,多出部分将会显示背景颜色。...@property CGRect frame; //设置是否隐藏 @property(getter=isHidden) BOOL hidden; //每个layer层有两面,这个属性确定是否两面都显示...; //获取内容rect尺寸 @property CGRect contentsRect; //设置内容填充和对其方式,具体上面有说 @property(copy) NSString *contentsGravity...- (void)setNeedsDisplay函数 @property BOOL needsDisplayOnBoundsChange; //绘制与读取内容 - (void)drawInContext:

1K20

iOS开发CoreGraphics核心图形框架之七——图像处理

进行图像截取示例代码如下: -(void)drawRect:(CGRect)rect{ CGContextRef contextRef = UIGraphicsGetCurrentContext...则当满足如下条件,这个像素点会被裁剪: min1<c1<max1,min2<c2<max2,min3<c3<max3 需要注意,使用这种方式进行膜层裁剪,原图像不可以有alpha通道,色值取值范围为...对于被裁剪出来部分,开发者可以使用其他颜色进行填充,示例代码如下: -(void)drawRect:(CGRect)rect{ CGContextRef contextRef = UIGraphicsGetCurrentContext...除了上面介绍了两种对图像进行裁剪方法外,CoreGraphics框架中还提供了一种裁剪方式,示例代码如下: -(void)drawRect:(CGRect)rect{ CGContextRef...CoreGraphics框架也可以绘制复杂图像混合效果,在进行图像混合时,需要先绘制背景图像,之后设置图像混合模式,在绘制前景图像,CoreGraphics会根据混合模式来进行最后图像绘制

1.5K10

绘图-几个较复杂统计图案例实现分析

这里要注意一点是为了使用动画代理,区分动画,我们使用了 [groundAnimation setValue:view.layer forKey:keyPath]; 因为最开始小圆点是不显示...在使用drawRect:重绘页面注意首先移除已有的图层maskLayer 同时做动画。...(4) 在弹性动画执行期间,定时器会不断获取某一所有的子视图 坐标 ,并修改 曲线上位置坐标,并根据 currentLinePathForWave 这个方法绘制出 渐变图层 mask...绘制关键步骤: 使用for循环在 drawRect方法中绘制每一个扇形(上篇文章已将讲过),因为环外标注,所以圆环需要小些,否则外环线上文字绘制起来有可能空间不够。...: 关于K线图可以左右滑动以及放大缩小,而是当手指滑动或者啮合时候调用了- (void)drawRect:(CGRect)rect方法,而是又重新画上去了,因为调用比较频繁,所以看起来像是在滑动一样!

1.4K20

【IOS开发高级系列】异步绘制专题

CGDataProviderRef provider, const CGFloat decode[], boolshouldInterpolate) 这个方法用于创建mask图片图层,可以设置其显示部分与不显示部分达到特殊效果...11KB多,大大压缩了图片数据量 ,而且从视角角度看,图片质量并没有明显降低.因此,在读取图片数据内容,建议优先使用UIImageJPEGRepresentation,并可根据自己实际使用场景...CGContextRelease(bitmapContext); // CGImageRelease(imgref); // // return newImage; } 5.1.3 绘制单元格底部出现高度不定细微黑线...问题原因: 将Text做宽高计算,高度值容易得出小数数值,而页面绘制均是基于整数像素点绘制,对于小数点部分,系统会做舍去处理(即便有缩放),固留下高度不定绘制区域(为黑色)。.../26/利用预渲染加速iOS设备图像显示 iOS使用CGContextRef绘制各种图形 http://www.devstore.cn/essay/essayInfo/116.html iOS CGContextRef

1.3K20

UI进阶13 Quartz2DQuartz2D

实现- (void)drawRect:(CGRect)rect方法,然后在这个方法中 取得跟当前view相关联图形上下文 绘制相应图形内容 利用图形上下文将绘制所有内容渲染显示到view上面...当view第一次显示到屏幕上(被加到UIWindow上显示出来) 调用viewsetNeedsDisplay或者setNeedsDisplayInRect: Quartz2D须知 Quartz2D...(CGContextRef context, CGRect rect) //添加一个圆弧 void CGContextAddArc(CGContextRef c, CGFloat x, CGFloat...使用含有“Create”或“Copy”函数创建对象,使用完后必须释放,否则将导致内存泄露 使用不含有“Create”或“Copy”函数获取对象,则不需要释放 如果retain了一个对象,不再使用时...,需要将其release掉 可以使用Quartz 2D函数来指定retain和release一个对象。

66330

iOS开发CoreGraphics核心图形框架之一——CGPath应用

在Objective-C工程中,CoreGraphics其中方法都是采用C语言风格进行编写,同时其并不支持Objective-C自动引用计数,在使用这个框架进行编程,开发者要手动对内存进行管理。...CGPath可以理解为图形路径,在Objective-C工程中,其实系统定义一个内部结构体,开发者不可以直接使用,开发者CGPathRef和CGMutablePathRef别名作为CGPath引用...第2个参数为要进行transform变换 CGPathRef CGPathCreateWithRect(CGRect rect,const CGAffineTransform * transform...cg_nullable path, CGRect * rect); //获取某个路径当前绘制所在点 CGPoint CGPathGetCurrentPoint(CGPathRef path); /...CGPathApply()方法中第3个参数为一个函数指针,示例C函数实现如下: void func(void * __nullable info, const CGPathElement

1.6K31
领券