颜色过度的算法

码农中的战斗机 2016-03-31 10:17:34
如题,我用需要计算得到两个颜色中间的颜色。
具体一点的例子,就是有限元计算中的云图, 比如最大应力是 300 ,显示为红色, 最小应力为10 显示为绿色。 那么 150应该显示为什么颜色?

我现在想到的两种方式:
1. R、G、B分别判断插值
2. 网上看到的算法,相当于256 进制, B位 255+1 之后进位到G, 类似 G位255+1 之后进位到R
但是效果都不好,和LinearGradientBrush 出来的渐变条上的颜色不同。

希望大牛提供一个和LinearGradientBrush一样的颜色过度的算法。

'填充PictureBox1渐变色的代码
Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint

Dim c1, c2 As Color
c1 = Color.FromArgb(255, 255, 0, 0)
c2 = Color.FromArgb(255, 255, 255, 0)
Using LG As Drawing2D.LinearGradientBrush = New Drawing2D.LinearGradientBrush(New Point(0, 0), New Point(PictureBox1.Width, 0), c1, c2)
e.Graphics.FillRectangle(LG, New Rectangle(0, 0, PictureBox1.Width, PictureBox1.Height))
End Using
End Sub
...全文
468 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
小白点1995 2019-11-13
  • 打赏
  • 举报
回复
第一种方法是我现在用的,效果不错,现在犯难的就是,还要嵌入alpha的算法,哇脑袋爆炸
Poopaye 2016-03-31
  • 打赏
  • 举报
回复
300 -> R255 G0 B0 10 -> R0 G255 B0 计算150的百分比 t = (150 - 10) / (300 - 10) 颜色值 R:t * 255 G:(1-t) * 255 B:0
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
300 -> R255 G0 B0 10 -> R0 G255 B0 计算150的百分比 t = (150 - 10) / (300 - 10) 颜色值 R:t * 255 G:(1-t) * 255 B:0
额,就是我说的第一种方法——直接R、G、B分别插值,仔细看了一下,原来是我刚才的代码写错了,所以不对。 不管怎样谢了

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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