当前位置: 首页 > news >正文

Winform 渐变色 调色板

原本想研究一下C#生成热力图,奈何知识点较多(相对于本人来讲),一下子看的有点懵,本着循序渐进的思想,在此记录一个相关功能。

生成一个可以自定义颜色的调色板,效果图:

渐变色图片实际是生成的一张位图,放在了Panel控件中 :

colorPanel.BackgroundImage = colorBitmap;

colorPanel是我的控件名,colorBitmap是位图对象的引用;

代码:

private void CreatePaletteImage()
{List<Color> newColors = new List<Color>();//颜色集合newColors.AddRange(GetGradientColorList(Color.Red, Color.Yellow, 64));newColors.AddRange(GetGradientColorList(Color.Yellow, Color.Green, 64));newColors.AddRange(GetGradientColorList(Color.Green, Color.Blue, 64));newColors.AddRange(GetGradientColorList(Color.Blue, Color.Navy, 64));//颜色调色板展示Bitmap colorBitmap = new Bitmap(colorPanel.Width, colorPanel.Height);//从位图中获得GDI+对象Graphics graphic = Graphics.FromImage(colorBitmap);for (int i = 0; i < 256; i++){SolidBrush solidBrush = new SolidBrush(newColors[i]);Rectangle rectangle = new Rectangle((int)(i * 2), 0, (int)2, colorPanel.Height);graphic.FillRectangle(solidBrush, rectangle);graphic.Save();solidBrush.Dispose();}colorPanel.BackgroundImage = colorBitmap;
}/// <summary>
/// 获得两个颜色之间渐进颜色的集合
/// </summary>
/// <returns>返回颜色集合</returns>
public static List<Color> GetGradientColorList(Color srcColor, Color desColor, int count)
{List<Color> colorFactorList = new List<Color>();int redSpan = desColor.R - srcColor.R;int greenSpan = desColor.G - srcColor.G;int blueSpan = desColor.B - srcColor.B;for (int i = 0; i < count; i++){Color color = Color.FromArgb(srcColor.R + (int)((double)i / count * redSpan),srcColor.G + (int)((double)i / count * greenSpan),srcColor.B + (int)((double)i / count * blueSpan));colorFactorList.Add(color);}return colorFactorList;
}
问:Graphics.FromImage(img);的功能是什么?这样定义后画布与图片的关系到底是怎样的?

答:

就是通过image创建了个画布,就是允许你改变image。你就想象成Graphics就像图片外面一层透明的膜,在膜上画图就相当于在image上画图了。

引用:Graphics - 我是牙牙 - 博客园

C# .Net实现简易灰度图和酷炫HeatMap热力图winform(进阶)_c# 热力图-CSDN博客 

http://www.dtcms.com/a/306607.html

相关文章:

  • 【AI论文】单一领域能否助力其他领域?一项基于数据的、通过强化学习实现多领域推理的研究
  • C#程序员计算器
  • Linux性能分析与内存调试:perf和Valgrind高级使用指南
  • 数据结构(7)单链表算法题OVA
  • Tlias 案例-整体布局(前端)
  • docker镜像加速及国内镜像源
  • cocos打包web - ios设备息屏及前后台切换音频播放问题
  • 美国人工智能行动计划:洞察 AI 发展新路径​​
  • 怎样在 Vue 中定义全局方法?
  • 快速删除Word和WPS文字中的空白行
  • LLM—— 基于 MCP 协议(SSE 模式)的工具调用实践
  • PYTHON从入门到实践-17通过网络API获取数据与可视化
  • Deforum Stable Diffusion,轻松实现AI视频生成自由!
  • Python爬虫04_Requests豆瓣电影爬取
  • 《消息队列学习指南:从 MQ 基础到 SpringAMQP 实践》
  • AI一周事件(2025年7月22日-7月29日)
  • wps批量让浮动在表格的图片跟随单元格移动和调整大小
  • 树莓派 香橙派SD卡TF卡U盘系统备份与还原
  • 【Kubernetes 指南】基础入门——Kubernetes 201(二)
  • 【昇腾】基于Atlas 200I DK A2开发者套件修改usb0的默认IP重启后被恢复的问题处理_20250730
  • 第十二天:C++ 标准库函数分类总结
  • LeetCode 56 - 合并区间
  • SpringBoot收尾+myBatis plus
  • 算法精讲:二分查找(二)—— 变形技巧
  • JavaScript中的数据类型以及存储上的差别
  • Keil STM32工程各文件作用
  • ArcGIS以及ArcGIS Pro如何去除在线地图制作者名单
  • 黑马点评-超卖问题
  • 实现了加载 正向 碰撞 雅可比 仿真
  • 4.Origin2021如何绘制多组误差棒图?