`

iOS 绘制UIImage的方式

阅读更多
一:在绘制到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);

分享到:
评论

相关推荐

    UIIMage 改变颜色和遮罩

    在iOS开发中,UIImage是苹果提供的一个关键类,用于显示和处理图像。当你需要对图片进行颜色调整或添加遮罩效果时,可以利用UIKit框架中的各种方法和属性来实现。下面将详细介绍如何改变UIImage的颜色以及如何应用...

    IOS应用源码——UIImage+Sprite for iOS.rar

    UIImage不负责绘制图像,而是持有图像数据并提供与图像相关的各种操作。它支持多种图像格式,如JPEG、PNG等,并且可以处理透明度和颜色空间。UIImage类的一些基本方法包括: 1. `init(named:)`:根据指定的名称从...

    IOS源码应用Demo-UIImage+Sprite for iOS.zip

    在"UIImage+Sprite for iOS"项目中,开发者通过 Category(分类)的方式对UIImage进行了扩展,添加了对精灵图的支持。Category是一种在不修改原有类的基础上,为已有的类添加新方法的机制。在这个案例中,Category...

    iOS应用开发中对UIImage进行截取和缩放的方法详解

    在iOS应用开发中,UIImage是处理图像的基本类,它提供了加载、显示和处理图像的功能。在某些场景下,我们可能需要对UIImage进行截取或缩放以满足特定的需求。例如,展示图片的一部分,或者调整图片大小以适应界面...

    ios 简单绘制文本,线条,图片,动画,按钮

    本教程将聚焦于如何在iOS中简单地绘制文本、线条、图片以及创建动画和按钮。我们将使用UIKit框架中的Core Graphics(也称为Quartz 2D)和UIKit自身提供的组件来实现这些功能。 ### 绘制文本 在iOS中,我们可以使用...

    UIImage-PDF.zip

    最后,使用`UIGraphicsBeginImageContext`创建一个新的图形上下文,将PDF页面绘制到这个上下文中,然后调用`UIGraphicsGetImageFromCurrentImageContext`获取绘制后的`UIImage`。 除了显示PDF的第一页,高级的实现...

    UIImage-Extensions 多媒体源码_ios源码

    "UIImage-Extensions"是一个开源项目,它扩展了UIImage的功能,为开发者提供了更便捷、灵活的方式来操作图片。这个项目通常包含一系列的类别(Category)或者扩展方法,以增强UIImage的原生能力。以下是对"UIImage-...

    iOS游戏应用源代码——r3econ-UIImage-Sprite-Additions-0738b37.zip

    这个名为“r3econ-UIImage-Sprite-Additions-0738b37.zip”的压缩包包含了一个针对iOS平台的游戏应用的源码,特别关注了UIImage类的扩展,以支持精灵(Sprite)功能。UIImage是苹果iOS SDK中的一个基础类,用于处理...

    UIImage+Sprite+Animmation

    在iOS开发中,`UIImage`是苹果提供的一个关键类,用于处理和显示图像。这个类扩展了`UIImage`,增加了精灵(Sprite)和动画功能,让开发者能够更灵活地创建和控制游戏或应用中的动态图像。`UIImage+Sprite+Additions...

    IOS 不规则按钮实现方法

    "IOS 不规则按钮实现方法"主要涉及到自定义按钮和图形绘制技术,通过给定的文件名可以推测出这是一种通过Category(分类)扩展UIImage和UIButton类来实现的方法。接下来,我们将深入探讨这一实现过程。 首先,...

    iOS 图片裁剪 自定义大小 图片可缩放

    4. **Core Graphics**:在iOS中,Core Graphics框架提供了一系列低级别的图形绘制函数,用于进行图像处理,包括裁剪。我们可以使用CGContextRef上下文对象,配合CGImageCreateWithImageInRect函数来裁剪图片。 5. *...

    ios根据图片自定义按钮实现

    在iOS开发中,自定义控件常常能提升应用的用户体验和视觉效果。本文将深入探讨如何根据图片自定义UIButton,实现独特的按钮样式。这个过程主要包括以下几个关键知识点: 1. UIButton的自定义: UIButton是iOS中一...

    iOS图片绘制(自定义UIImageView)

    imageView.image = UIImage(named: "exampleImage") ``` ### 2. 自定义`UIImageView`扩展功能 虽然`UIImageView`提供了基本的图片显示功能,但如果我们需要更复杂的布局或交互,就需要自定义视图。这里,我们将...

    UIView转化为ImageDemo

    在iOS开发中,经常需要将UIView转换为UIImage,以便于保存、分享或者上传到服务器。这个"UIView转化为ImageDemo"项目就是一个很好的实例,演示了如何实现这个功能。在这个过程中,我们将深入探讨相关的知识点。 ...

    iOS中通过代码改变图片颜色系

    `UIImage`是iOS中的一个核心类,用于处理和显示图像。在iOS SDK中,我们可以创建`UIImage`实例,加载图片资源,以及对图片进行各种操作,如缩放、裁剪和着色。 在题目中提到的`ListViewController`中,我们可能会有...

    iOS原生代码生成二维码

    2. 绘制UIImage:使用 UIGraphicsBeginImageContext 和 UIGraphicsEndImageContext 来创建一个新的图形上下文,然后调用UIImage的drawInRect:方法将二维码图像绘制到这个上下文中。最后,获取并返回新的UIImage实例...

    在 iOS 上绘制多个图层 的工具_Objective-C_代码_下载

    在iOS平台上进行图形绘制时,Objective-C是一种常用的编程语言,特别是在开发原生应用程序时。本教程将深入探讨如何使用Objective-C来创建一个可以绘制多个图层的工具。这个工具可以帮助开发者实现复杂的图形用户...

    iOS之列表性能优化异步绘制.zip

    本资源“iOS之列表性能优化异步绘制.zip”提供了实现这一目标的方法,主要聚焦于异步线程绘制和图片异步下载渲染。下面将详细阐述这两个关键知识点。 1. 异步线程绘制: 在主线程中执行复杂的UI操作,如自定义Cell...

    iOS-多媒体-绘制不同的SVG图形-4Macaw

    4Macaw是一个iOS库,它提供了SVG图形绘制的功能,使得开发者能够在iOS应用中轻松地展示和操作SVG图形。本文将深入探讨如何在iOS应用中使用4Macaw库来绘制不同的SVG图形。 首先,让我们了解SVG的基本概念。SVG是一种...

    ios-ios原生API实现二维码的扫描、识别以及生成.zip

    然后,使用`CGContext`在内存中创建一个新的位图上下文,并将`CGImage`(由`UIImage`的`CGImage`属性提供)绘制到该上下文。`CoreGraphics`库提供了`CGImageCreateWithQRCode()`函数,它接受一个字符串,生成对应的...

Global site tag (gtag.js) - Google Analytics