一:在绘制到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);
分享到:
相关推荐
在iOS开发中,UIImage是苹果提供的一个关键类,用于显示和处理图像。当你需要对图片进行颜色调整或添加遮罩效果时,可以利用UIKit框架中的各种方法和属性来实现。下面将详细介绍如何改变UIImage的颜色以及如何应用...
UIImage不负责绘制图像,而是持有图像数据并提供与图像相关的各种操作。它支持多种图像格式,如JPEG、PNG等,并且可以处理透明度和颜色空间。UIImage类的一些基本方法包括: 1. `init(named:)`:根据指定的名称从...
在"UIImage+Sprite for iOS"项目中,开发者通过 Category(分类)的方式对UIImage进行了扩展,添加了对精灵图的支持。Category是一种在不修改原有类的基础上,为已有的类添加新方法的机制。在这个案例中,Category...
在iOS应用开发中,UIImage是处理图像的基本类,它提供了加载、显示和处理图像的功能。在某些场景下,我们可能需要对UIImage进行截取或缩放以满足特定的需求。例如,展示图片的一部分,或者调整图片大小以适应界面...
本教程将聚焦于如何在iOS中简单地绘制文本、线条、图片以及创建动画和按钮。我们将使用UIKit框架中的Core Graphics(也称为Quartz 2D)和UIKit自身提供的组件来实现这些功能。 ### 绘制文本 在iOS中,我们可以使用...
最后,使用`UIGraphicsBeginImageContext`创建一个新的图形上下文,将PDF页面绘制到这个上下文中,然后调用`UIGraphicsGetImageFromCurrentImageContext`获取绘制后的`UIImage`。 除了显示PDF的第一页,高级的实现...
"UIImage-Extensions"是一个开源项目,它扩展了UIImage的功能,为开发者提供了更便捷、灵活的方式来操作图片。这个项目通常包含一系列的类别(Category)或者扩展方法,以增强UIImage的原生能力。以下是对"UIImage-...
这个名为“r3econ-UIImage-Sprite-Additions-0738b37.zip”的压缩包包含了一个针对iOS平台的游戏应用的源码,特别关注了UIImage类的扩展,以支持精灵(Sprite)功能。UIImage是苹果iOS SDK中的一个基础类,用于处理...
在iOS开发中,`UIImage`是苹果提供的一个关键类,用于处理和显示图像。这个类扩展了`UIImage`,增加了精灵(Sprite)和动画功能,让开发者能够更灵活地创建和控制游戏或应用中的动态图像。`UIImage+Sprite+Additions...
"IOS 不规则按钮实现方法"主要涉及到自定义按钮和图形绘制技术,通过给定的文件名可以推测出这是一种通过Category(分类)扩展UIImage和UIButton类来实现的方法。接下来,我们将深入探讨这一实现过程。 首先,...
4. **Core Graphics**:在iOS中,Core Graphics框架提供了一系列低级别的图形绘制函数,用于进行图像处理,包括裁剪。我们可以使用CGContextRef上下文对象,配合CGImageCreateWithImageInRect函数来裁剪图片。 5. *...
在iOS开发中,自定义控件常常能提升应用的用户体验和视觉效果。本文将深入探讨如何根据图片自定义UIButton,实现独特的按钮样式。这个过程主要包括以下几个关键知识点: 1. UIButton的自定义: UIButton是iOS中一...
imageView.image = UIImage(named: "exampleImage") ``` ### 2. 自定义`UIImageView`扩展功能 虽然`UIImageView`提供了基本的图片显示功能,但如果我们需要更复杂的布局或交互,就需要自定义视图。这里,我们将...
在iOS开发中,经常需要将UIView转换为UIImage,以便于保存、分享或者上传到服务器。这个"UIView转化为ImageDemo"项目就是一个很好的实例,演示了如何实现这个功能。在这个过程中,我们将深入探讨相关的知识点。 ...
`UIImage`是iOS中的一个核心类,用于处理和显示图像。在iOS SDK中,我们可以创建`UIImage`实例,加载图片资源,以及对图片进行各种操作,如缩放、裁剪和着色。 在题目中提到的`ListViewController`中,我们可能会有...
2. 绘制UIImage:使用 UIGraphicsBeginImageContext 和 UIGraphicsEndImageContext 来创建一个新的图形上下文,然后调用UIImage的drawInRect:方法将二维码图像绘制到这个上下文中。最后,获取并返回新的UIImage实例...
在iOS平台上进行图形绘制时,Objective-C是一种常用的编程语言,特别是在开发原生应用程序时。本教程将深入探讨如何使用Objective-C来创建一个可以绘制多个图层的工具。这个工具可以帮助开发者实现复杂的图形用户...
本资源“iOS之列表性能优化异步绘制.zip”提供了实现这一目标的方法,主要聚焦于异步线程绘制和图片异步下载渲染。下面将详细阐述这两个关键知识点。 1. 异步线程绘制: 在主线程中执行复杂的UI操作,如自定义Cell...
4Macaw是一个iOS库,它提供了SVG图形绘制的功能,使得开发者能够在iOS应用中轻松地展示和操作SVG图形。本文将深入探讨如何在iOS应用中使用4Macaw库来绘制不同的SVG图形。 首先,让我们了解SVG的基本概念。SVG是一种...
然后,使用`CGContext`在内存中创建一个新的位图上下文,并将`CGImage`(由`UIImage`的`CGImage`属性提供)绘制到该上下文。`CoreGraphics`库提供了`CGImageCreateWithQRCode()`函数,它接受一个字符串,生成对应的...