ios CoreGraphics 随笔

 CoreGraphics 

  1. 图形绘制:使用 CoreGraphics 可以绘制各种基本图形,如线条、矩形、圆形、多边形等。

  2. 图像处理:CoreGraphics 可以用于对图像进行缩放、旋转、裁剪、颜色调整等操作。

  3. 文本处理:可以使用 CoreGraphics 绘制文本,设置字体、大小、颜色等属性。

  4. 图形上下文管理:通过 CoreGraphics 可以创建和管理图形上下文,用于绘制和渲染图形。

  5. 动画效果:利用 CoreGraphics 可以实现一些简单的动画效果,如淡入淡出、移动、缩放等。

  6. 坐标系统转换:CoreGraphics 提供了坐标系统转换的功能,可以在不同的坐标系之间进行转换。

  7. 绘图和涂鸦应用:开发绘图或涂鸦应用程序时,可以使用 CoreGraphics 来实现绘图功能。

  8. 游戏开发:在游戏开发中,可以使用 CoreGraphics 进行图形绘制和动画效果的实现。

CGColorGetComponents 函数将颜色的分量值存储在 components 数组中,数组的顺序取决于颜色空间的类型。例如,在 RGB 颜色空间中,数组的顺序为 red、green 和 blue;在 CMYK 颜色空间中,数组的顺序为 cyan、magenta、yellow 和 black

CGColorGetComponents(CGColorRef color, const CGFloat *components)
参数说明:color:要获取分量值的颜色对象。
components:指向一个 CGFloat 数组的指针,该数组用于存储颜色的分量值。

请注意,CGColorGetComponents 函数仅适用于某些颜色空间,例如 RGB、CMYK 等。对于其他颜色空间,可能需要使用不同的方法来获取分量值。

    CGColorRef colorRef = [UIColor colorWithHue:(CGFloat)2.0/(CGFloat)kPaletteSize saturation:kSaturation brightness:kBrightness alpha:1.0].CGColor;const CGFloat *components = CGColorGetComponents(colorRef);[_painView setBrushColorWithRed:components[0] green:components[1]  blue:components[2]];

  一个小用例

-(GLuint)loadTexture:(NSString *)fileNmae {CGImageRef imageRef = [UIImage imageNamed:fileNmae].CGImage;if (!imageRef) {NSLog(@"failed  to load image %@",fileNmae);}// 图片宽高size_t width = CGImageGetWidth(imageRef);size_t height = CGImageGetHeight(imageRef);//获取图片字节数 宽 x 高 * 4GLubyte *spriteData = (GLubyte *)calloc(width * height * 4, sizeof(GLbyte));//创建上下文 CGContextRef spriteContext = CGBitmapContextCreate(spriteData, width, height, 8, width * 4, CGImageGetColorSpace(imageRef),kCGImageAlphaPremultipliedLast);//绘制图片 CGRect rect = CGRectMake(0,0, width, height);CGContextDrawImage(spriteContext, rect, imageRef);CGContextRelease(spriteContext);// 绑定纹理glBindTexture(GL_TEXTURE_2D, 0);//设置纹理的属性//放大过滤/缩小过滤glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);// 环绕方式glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);//载入纹理float fw = width, fh = height;glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, fw, fh, 0, GL_RGBA, GL_UNSIGNED_BYTE, spriteData);glBindTexture(GL_TEXTURE_2D, 0);free(spriteData);return 0;
}

一个大牛总结的挺不错

iOS-CoreGraphics图形库 - 简书

CoreGraphics详解 - 简书

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/602582.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx快速入门:worker、master进程的作用和热部署原理(十)

0. 引言 我们通过查询nginx进程,可以发现nginx有两个进程:worker和master。一个程序启动了两个进程,那么这两个进程的作用和区别是什么呢?nginx又是如何利用这两个进程进行工作的呢?nginx不停机热部署又是如何实现的&…

12月笔记

#pragma once 防止多次引用头文件,保证同一个(物理意义上)文件被多次包含,内容相同的两个文件同样会被包含。 头文件.h与无.h的文件: iostream是C的头文件,iostream.h是C的头文件,即标准的C头文…

一个H3C交换机周期性断网并自动恢复的排查案例

一个朋友发我一个H3C日志,这个交换机是汇聚层交换机,1和2口是trunk口,其它接口是access接口,17-21口据说接的都是监控、终端。日志里面看到大量的拓朴改变,好几个网口up、down的日志,怀疑是环路&#xff0c…

Android 某个应用缺少特殊权限导致系统一直重启解决

Android 某个应用缺少特殊权限导致系统一直重启解决 文章目录 Android 某个应用缺少特殊权限导致系统一直重启解决一、前言二、错误日志三、分析解决四、其他1、对 privapp-permissions 称呼的误解2、系统特殊权限有哪些2、系统其他权限介绍(1)普通权限&…

Linux操作系统基础 – 管理目录

Linux操作系统基础 – 管理目录 Linux Essentials – Manage Directories By JacksonML 本文简要介绍在Linux系统中如何管理目录的方法及实例,希望对您有所帮助。 1. Linux目录 一个目录,是一个存储文件名及相关信息的单独工作的文件。所有的文件&am…

SpringBoot学习(七)-SpringBoot集成Swagger

集成Swagger终极版 学习目标: 了解Swagger的概念及作用掌握在项目中集成Swagger自动生成API文档 Swagger简介 前后端分离 前端 -> 前端控制层、视图层后端 -> 后端控制层、服务层、数据访问层前后端通过API进行交互前后端相对独立且松耦合 产生的问题 前…

Qt——TCP UDP网络编程

目录 前言正文一、TCP二、UDP1、基本流程2、必备知识 三、代码层级1、UDP服务端 END、总结的知识与问题1、如何获取QByteArray中某一字节的数据,并将其转为十进制?2、如何以本年本月本日为基础,获取时间戳,而不以1970为基础&#…

Docker-Compose部署Redis(v7.2)分片集群(含主从)

文章目录 一、前提准备1. 文件夹结构 二、配置文件1. redis.conf2. docker-compose文件 三、构建集群1. 自动分配主从关系2.1 构建3 master集群2.2 手动配置从节点 四、测试1. 集群结构2. 分片测试 环境 docker desktop for windows 4.23.0redis 7.2 目标 搭建如下图分片主从…

2023新版edge浏览器页面加载不出来的解决办法

2023新版edge浏览器页面加载不出来的原因有很多,以下是一些可能的解决方法: - 检查网络连接:确保你的设备连接到稳定的网络,尝试重新启动路由器或调制解调器。 - 清除浏览器缓存:打开edge浏览器,点击右上…

基于Kettle开发的web版数据集成开源工具(data-integration)-应用篇

目录 📚第一章 基本流程梳理📗页面基本操作📗对应后台服务流程 📚第二章 二开思路📗前端📗后端📗后续补充:[Kettle Local引擎源码使用记录](https://renxiaozhao.blog.csdn.net/arti…

简单工厂模式、工厂方法、抽象工厂模式

下面例子中鼠标,键盘,耳麦为产品,惠普,戴尔为工厂。 简单工厂模式 简单工厂模式不是 23 种里的一种,简而言之,就是有一个专门生产某个产品的类。 比如下图中的鼠标工厂,专业生产鼠标&#xf…

面试的几个问题

1.HashMap出现死锁的场景 2.JAVA对象头结构 3.int和integer的区别 4.java中String s new String("hello")创建了几个对象 1.hashmap是线程不安全的,多线程时候容易造成死锁 HashMap是Java中的一个线程不安全的集合类,因此并不会出现真正意义…

STM32 JLINK SWD调试器手动复位才能烧写的问题

STM32 JLINK SWD调试器手动复位才能烧写的问题 Chapter1 STM32 JLINK SWD调试器手动复位才能烧写的问题 Chapter1 STM32 JLINK SWD调试器手动复位才能烧写的问题 原文链接:https://blog.csdn.net/denghuajing/article/details/121649667 问题 只有手动复位的情况下…

B059-权限管理系统01

目录 知识点介绍项目演示项目搭建动态菜单查询分析(权限表分析)权限系统表分析角色模块pageInfopageHelper实现前端动态分页高级查询新增与修改删除角色 分配权限-表分析角色授权数据-一级和二级权限查询 知识点介绍 项目演示 准备数据库 准备工程auth_new tips:…

C++基础实战——通讯录管理系统

本专栏记录C学习过程包括C基础以及数据结构和算法,其中第一部分计划时间一个月,主要跟着黑马视频教程,学习路线如下,不定时更新,欢迎关注。 当前章节处于: ---------第1阶段-C基础入门 >第2阶段实战-通讯…

解决“SQLServer 添加数据库,报Error 5118“错误

当将把一个SQLServer的数据库文件*.MDF和日志文件*.LDF,从电脑A拷贝到电脑B,然后在电脑B上,使用Microsoft SQL Server Management Studio添加该*.MDF文件,有时报"Error 5118"错误,如图(1)所示: 图…

mysql视图和sql语句

mysql视图和sql语句 一.mysql视图1.数据的虚拟表示:2.简化复杂查询:3.安全性和权限控制:4.逻辑数据组织:5.更新限制:6.视图的创建: 二.mysq语句使用案列 MySQL的视图(View)是一个虚拟…

Docker安装WebRTC下TURN服务

详细实现方式以及代码下载请前往 https://www.passerma.com/article/90 实现效果 一、手动构建镜像 1.新建Dockerfile文件 文件用于编译镜像 以alpine为基础镜像 添加coturn需要的依赖库 获取coturn并进行编译 通过start.sh启动turnserver服务 Dockerfile FROM alpineRUN ap…

HarmonyOS 开发基础(六)Slider

HarmonyOS 开发基础(六)Slider Entry Component struct Index {build() {Row() {Column() {// Slider:ArkUI 的基础组件 滑动条组件// options 参数:Slider 基础设置Slider({// 最小值min: 20,// 最大值max: 200,// 当前值value: …

深入剖析pcap中的网络异常:TTL过期攻击、ARP中毒、TCP重传与重叠碎片等

网络流量数据包捕获是网络安全领域的重要部分,而pcap文件则是这一过程的常见载体。为了深入解析pcap文件中潜在的可疑网络流量,我们需要运用强大的网络安全威胁评估与审计工具。这些工具能够帮助我们捕捉、记录、检测和诊断网络中的数据传输问题&#xf…