一:在绘制到context前通过矩阵垂直翻转坐标系
// uiImage是将要绘制的UIImage图片,width和height是它的宽高
CGContextTranslateCTM(context, 0, height);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextDrawImage(context, CGRectMake(0, 0, width, height), uiImage.CGImage);
二:使用UIImage的drawInRect函数,该函数内部能自动处理图片的正确方向
// uiImage是将要绘制的UIImage图片,width和height是它的宽高
UIGraphicsPushContext( context );
[uiImage drawInRect:CGRectMake(0, 0, width, height)];
UIGraphicsPopContext();
三:垂直翻转投影矩阵
这种方法通过设置上下颠倒的投影矩阵,使得原本y轴向上的GL坐标系看起来变成了y轴向下,并且坐标原点从屏幕左下角移到了屏幕左上角。如果你习惯使用y轴向下的坐标系进行二维操作,可以使用这种方法,同时原本颠倒的图片经过再次颠倒后回到了正确的方向:
[cpp] view plaincopy
// uiImage是将要绘制的UIImage图片,width和height是它的宽高
// 图片被颠倒的绘制到context
CGContextDrawImage(context, CGRectMake(0, 0, width, height), uiImage.CGImage);
// 设置上下颠倒的投影矩阵(则原来颠倒的图片回到了正确的方向)
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof( 0, framebufferWidth, framebufferHeight, 0, -1, 1 );
===================================================
这些方法绘制出来的图片不会出现反转的情况。
/////////////////////////////////////////////////////////////////////////////
四、这种绘制的图片会发生反转
NSString *path = [[NSBundle mainBundle] pathForResource:@"dog" ofType:@"png"];
UIImage *img = [UIImage imageWithContentsOfFile:path];
CGImageRef image = img.CGImage;
CGContextSaveGState(context);
CGRect touchRect = CGRectMake(0, 0, img.size.width, img.size.height);
CGContextDrawImage(context, touchRect, image);
CGContextRestoreGState(context);
分享到:
相关推荐
通过 按钮点击检测、图片剪切 等步骤,可以得到我们最终需要的图片效果,并且在需要变换形状的时候,仅仅将mask图片替换掉即可。
导出到UIImage对象 请参阅。 安装 使用CocoaPods。 pod 'KMZDrawView' 开始使用 创建新的Xcode项目。 安装KMZDrawView窗格,并打开工作区。 打开一个情节提要,然后将UIView添加为子视图。 将“ KMZDrawView”...
WTGlyphFontSet 在您的iOS项目中轻松使用免费的Webfont图标没有在Info.plist上进行设置drawRect或生成任意大小的图像就像使用[UIImage imageNamed:]一样简单椰子足支持支持正常或视网膜显示应用上的图片较少,以...
本文实例介绍了IOS定制属于自己的个性头像的方法,分享给大家供大家参考,具体内容如下 一、效果图 1、将一张图片剪切成圆形 2、在图片周围显示指定宽度和颜色的边框 二、实现思路 1、效果图中主要由不同尺寸的两大...
源码YOChartImageKit,watchOS没有UIView类,因此 YOChartImageKit 被用来实现为自定义值的图表绘制UIImage。 可绘制包括折线图、柱状图、环形图等,分别可以调整显示选项。
本文实例为大家分享了iOS实现电子签名的具体代码,供大家参考,具体内容如下 实现原理 1、使用拖动手势记录获取用户签名路径. 2、当用户初次接触屏幕,生成一个新的UIBezierPath,并加入数组中.设置接触点为起点.在...
作者shenguanhua,源码GHUIImage,本demo使用Core Graphics在图片上绘制文字,文字居中显示,可修改文字和文字大小,后续会增加新的内容。喜欢的欢迎github star一个,具体用法请前往github,有问题可以联系我。
之前分别介绍了图片裁剪和图片旋转方法 《iOS 图片裁剪方法》 ...《iOS 图片旋转方法》 ...裁剪和旋转是可以连在...static func cropImage(_ image: UIImage, withRect rect: CGRect, angle: Double) -> UIImage? { // Crea
访问者15.1 何为访问者模式15.2 何时使用访问者模式15.3 用访问者绘制TouchPainter中的Mark15.4 访问者的其他用途15.5 能不能用范畴代替访问者模式15.6 总结第16章 装饰16.1 何为装饰模式16.2 何时使用装饰模式16.3 ...
KKSignatureView是用Objective-C编写的iOS签名控件。 特征 在屏幕上的任何地方轻松绘制签名 仅通过调用实例方法即可获取和设置签名图像 自定义签名的宽度和线条颜色 颜色清晰 用法 下载源并将其包含在您的项目中 ...
UIImage可通过CGImage或CIImage初始化,初始化方法分别为init(cgImage: CGImage, scale: CGFloat, orientation: UIImageOrientation)和init(ciImage: CIImage, scale: CGFloat, orientation: UIImageOrientation)。...
UIImage *image2=[UIImage imageNamed:@”me”]; [image2 drawAtPoint:CGPointMake(100, 100)]; } 显示: 2.剪切图片让图片圆形展示 思路:先画一个圆,让图片显示在圆的内部,超出的部分不显示。 注意:...
第一眼看到图片验证码,可能会觉得图片验证码是由 UIImage 实现的,但事实上明显不是,这里简单说下图片验证码封装思路。 首先要有一个数组,里面包含 1-9、a-z 这些字符 在 UIView 上显示这些字符 同时在 UIView...
用法的iOS import SwiftDrawlet image = UIImage ( svgNamed : " sample.svg " )苹果系统import SwiftDrawlet image = NSImage ( svgNamed : " sample.svg " )命令行工具在下载最新的命令行工具。 $ swiftdraw ...
效果图 设计要求 1、画笔能设置大小、颜色 2、有清屏、撤销、橡皮擦、导入照片功能 3、能将绘好的画面保存到...4、导入照片功能,可以用系统的 UIImagePickerController 选取照片得到UIImage,然后再将 UIImag
UPCB条形码UPCBarcodes是用于将UPC-12和EAN-13类型的条形码绘制到UIImage的实用程序。 支持:iOS 8.0,需要ARC UPCBarcodes旨在成为通用条形码格式的轻量级实现。 无需集成数千行代码或大量复杂的设置代码。安装对于...
绘制的完全可自定义的基于进度的加载器。 - 漂亮的加载动画的集合。 - 允许用户裁剪 UIImage 对象的视图控制器。 - 漂亮的 MPAndroidChart 的 iOS 端口。 - 用 Swift 编写的适用于 iOS 8 的自定义可视化日历。 - 与 ...
SwiftSignatureView(现在使用 PencilKit!)描述SwiftSignatureView是一种轻量级,快速且可自定义的选项,用于在您的应用... 在 PencilKit (iOS13+) 中,当用户使用他们正在使用的工具结束绘制序列时,您会获得一个
作者Friend-LGA,源码LGDrawer,LGDrawer 利用 LGDrawer 封装好的方法,可以传入参数,然后绘制出各种不同样式的 UIImage。(正方形,心形,五角星,三角形,加减号等)。 详细说明:...
来源: github/LGDrawer Licence: ...(正方形,心形,五角星,三角形,加减号等) 示例:绘制一个正方形 #import "LGDrawer.h" UIImage *rectangle = [LGDrawer drawRectangleWithImageSize:CGSizeMake(90.f, 90.f)