色盘是一张图,我们不用关心其形状或颜色分布,根据业务需求请美工做出该图即可。
在这里,我使用这样一张图作为色盘图:

需求:鼠标点击/按住该UI图的时候,把该位置对应的颜色值赋给模型。模型变色请看这篇博文:https://blog.csdn.net/itsxwz/article/details/89376498

可以看出来,这张图不是很均匀的全颜色分布,而是很多小的同色块组成。利用颜色值(0~255)和半径来处理是不可能很好的实现的。
我们换一种思路:获取鼠标点对应的图片像素点的颜色值。

API:Texture2D.GetPixel(int x, int y);可以帮助我们达到上述目的。
我们可以通过Input.mousePosition;来获取鼠标点的位置。
那么,怎么把mousePos转换为pixelPos呢?

因为色盘在Canvas上的位置是任意的,我们可以确定一个中心点centerPos,即上图的圆心处。我们有2中方式获取圆心点:1)Input.mousePosition;但是人眼确定位置,人手点击的方式一定会有误差,所以我们采用方式2;2)根据色盘物体的RectTransform的PosX和PosY来计算,屏幕的中心点(0,0)在屏幕左中位置,则色盘中心点为(PosX , Screen.height / 2 + PosY)。

通过pixelPos = mousePos - centerPos + tex / 2;的转换我们就可以获取该像素点的颜色了。
我们要注意判断mousePos是否在色盘内,否则不读取像素点颜色值。

代码实现如下:

 private void ChooseColorByClickColorWheel() {if (Input.GetMouseButtonDown(0) || Input.GetMouseButton(0)) {Vector2 mousePos = new Vector2(Input.mousePosition.x, Input.mousePosition.y);int x = (int)(mousePos.x - centerPos.x);int y = (int)(mousePos.y - centerPos.y);if(x*x + y*y <= Mathf.Pow(tex.width/2,2)) {//tex为色盘图pixelColor = tex.GetPixel(x + tex.width/2, y+tex.height/2);}}}

可以类推到适用该功能的所有应用场景上去(点击UI图片取色??),不限于“色盘”。

最后说明下坐标的问题:

【20190713】
上述可以总结为先获取图片Pixel点,在根据坐标转换为颜色值。
https://me.csdn.net/qq_29487981 Masaka_Yogi
上面的大佬找到了一个api能够直接获取到像素点坐标:
public static bool ScreenPointToLocalPointInRectangle(RectTransform rect, Vector2 screenPoint, Camera cam, out Vector2 localPoint);
ps:namespace UnityEngine

Unity之读取色盘(任意形状和颜色分布)颜色相关推荐

  1. 【Python】文本文件生成词云图片-单字过滤和任意形状词云和清晰度提高

    [Python]txt文本文件生成词云图片 资源提供 纯方框,无文字 单字过滤 任意形状词云 提高清晰度 完整代码 该程序由pycharm运行,产生的图片文件在项目文件夹内. 资源提供 决胜全面建成小 ...

  2. c++ 提取傅里叶描述子_Matlab | 提取图像ROI任意形状

    前言 本文给出在matlab中如何提取图像任意形状的感兴趣(ROI)区域的程序及分析. 程序 程序如下: clc;clear; I=imread('1.bmp'); % 读取一张图片 imshow(I ...

  3. 如何用python绘制灰度直方图_Python Opencv任意形状目标检测并绘制框图实例

    Python Opencv检测并绘制框图 opencv 进行任意形状目标识别,供大家参考,具体内容如下 工作中有一次需要在简单的图上进行目标识别,目标的形状不固定,并且存在一定程度上的噪声影响,但是噪 ...

  4. 自然场景下的文字检测:从多方向迈向任意形状

    点击我爱计算机视觉标星,更快获取CVML新技术 本文经作者授权转载自知乎旷视Detection组专栏: https://zhuanlan.zhihu.com/p/68058851 旷视检测组在刚刚结束 ...

  5. Illustrator 教程:如何在 Illustrator 中应用任意形状渐变?

    欢迎观看illustrator教程,小编带大家学习 illustrator 的基本工具和使用技巧,了解如何在 illustrator 中应用和编辑任意形状渐变,实现更自然流畅的色彩混合效果. 使用 i ...

  6. 如何在 Illustrator 中应用任意形状渐变?

    使用 Illustrator 可以轻松创建任意形状渐变的复杂多色渐变来调整图稿效果,本文将通过几个例子介绍如何在图稿中应用任意形状渐变.线性或径向渐变都是对颜色进行线性混合,而任意形状渐变可用于在某种 ...

  7. 云计算机的形状,怎样用ps做任意形状的云彩

    有网友问:怎样用ps做任意形状的云彩?下面,我给这位网友解答. 操作方法 01启动PS,进入到新建文档界面,点击:新建 02打开新建文档的对话框,在给背景内容这里点击下拉按钮,在弹出的列表中选择:其它 ...

  8. python使用opencv将tif裁剪为任意形状

    python使用opencv将tif裁剪为任意形状 前言 一.opencv是什么? 二.使用步骤 1.安装依赖 2.裁剪 总结 前言 博主最近在研究如何将tif裁剪成需要的任意形状,博主考虑过gdal ...

  9. 计算球堆积密度的c语言程序,用于形成包含堆积在任意形状的体积中的多分散球形颗粒的计算机化模型的方法和系统与流程...

    本发明通常涉及一种在用于产品的数值模型的计算机辅助的工程分析中的计算机化模型的形成,更具体地说,涉及一种用于形成代表堆积在任意形状的体积中的多分散球形颗粒的计算机化模型的方法和系统. 背景技术: 许多 ...

最新文章

  1. 高德引擎构建及持续集成技术演进之路
  2. Spring Cloud Stream Binder 实现
  3. 使用nsenter进入docker namespace
  4. 底部居中_中文编程:安卓的底部菜单设计
  5. .NET CORE在ubuntu1604上运行
  6. Excel 【小型成绩分析系统初稿】(功能及适应性有待完善)
  7. 经典网络分析 - Very Deep Convolutional Networks for Large-Scale Image Recognition(VGG)
  8. 通过命令在navicat中创建数据库及表结构
  9. Spring context命名空间
  10. 读书:《带人的技术》
  11. Win7任务栏图标大小调整为等宽
  12. mysql 未发现数据源名称并且未指定默认驱动程序_SQLSERVER 链接 MYSQL 的 两种方法 及 未发现数据源名称并且未指定默认驱动程序 处理办法...
  13. 安徽省月度降水量分布数据
  14. 字符串过滤html代码
  15. 大数据---Hadoop的各种版本
  16. 【校内互侧】ZYF loves qaq (找规律+递推)
  17. IDEA左侧,按照文件夹排序
  18. SmartForms 取消Word编辑器 恢复文本编辑器
  19. MOSFET管驱动电路的设计
  20. 如何将PDF转换Word?微信如何转换PDF文件?

热门文章

  1. 全球及中国假奶酪行业研究及十四五规划分析报告
  2. python爬小红书_基于文本分析和SEM模型的小红书用户粘性研究
  3. 《操作系统原理技术与编程》C代码与习题答案
  4. hypermesh中一阶单元和二阶单元
  5. 当了项目经理,最想知道的八件事!
  6. Review paper [Moodlens: an emoticon-based sentiment analysis system for chinese tweets]
  7. 用象棋的思维趣说IT人的职业发展和钱途
  8. 从0到1搭建一台属于个人的服务器,永久可运行!
  9. html和ccs课程设计报告,CCS+DIV实战代码示例--一个静态页面
  10. 人民币数字大写转换 java实现 [附源码]