C#获取渐变色

dianjixue1 2014-12-17 08:49:57
遇到一个项目要求是这样的:
用户输入一个起始颜色、一个终止颜色
希望能得到起始颜色、终止颜色之间某一点的颜色(得到2个颜色点之间的色线)。

我的做法是这样的,取到两个颜色的RGB分量,然后分别做一下比例运算,得到一个颜色的RGB分量,就是这个颜色。但是发现得到的颜色不符合要求。
例如,起始点选择 黄色、终止点选择蓝色,我得到的颜色可能是位于黄色到蓝色渐变之间颜色,最终得到的色线是这样的

但是实际要求得到的颜色是这样的

要求是在色相之间的渐变。

大家有没有什么计算方法能得到这种结果?不用很精确。
...全文
428 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dianjixue1 2015-01-30
  • 打赏
  • 举报
回复
问题大致解决了,但是限制了用户的选色,只能选择固定饱和度(255)固定亮度的颜色。 先做一个 按照 红橙黄绿青蓝紫红 变化的RGB分量 点阵 public static float[,] colors = new float[,] { { 255f, 255f, 0, 0, 0, 255f, 255f }, { 0, 255f, 255f, 255f, 0, 0, 0 }, { 0, 0, 0, 255f, 255f, 255f, 0 } };//颜色点阵 得到的颜色根据色调值的比例(起始颜色色调和终止颜色色调已知),从点阵中取值。 大概就是这么的原理,目的是根据 HSB (主要是H)颜色求RGB颜色。
  • 打赏
  • 举报
回复
下图有很长一段是绿色,也就是G分量值接近255,R和B接近0,知道这个规律就好办了 起始的黄色记为颜色a, 终止的蓝色记为b,则大致的变换过程为(省略号表示那一段不变或者微量的变化): R: a.R -> 0......... 0 -> b.R G: a.G -> 255...255 -> b.G B: a.B -> 0......... 0 -> b.B
dianjixue1 2014-12-17
  • 打赏
  • 举报
回复
引用 3 楼 zjgdtl 的回复:
你是不是多改变了一个G的分量?G 保持0可以么?
根据之前的计算方式的得不到要求的结果的。 因为我只考虑了2中颜色,而要求是 根据 赤橙黄绿青蓝紫 渐变的
zjgdtl 2014-12-17
  • 打赏
  • 举报
回复
你是不是多改变了一个G的分量?G 保持0可以么?
dianjixue1 2014-12-17
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
获取某个点的颜色,用bitmap的GetPixel
没有图片,颜色是让用户采用颜色控件录入的
bdmh 2014-12-17
  • 打赏
  • 举报
回复
获取某个点的颜色,用bitmap的GetPixel

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧