当前位置: 首页 > 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.lryc.cn/news/605301.html

相关文章:

  • 代码随想录算法训练营第五十六天|动态规划part6
  • C语言基础11——结构体1
  • AutoSAR(MCAL) --- ADC
  • VoIP技术全面深度学习指南:从原理到实践的认知进化
  • 【GEO从入门到精通】生成式引擎与其他 AI 技术的关系
  • Linux ARM 平台 C 语言操作 Excel 文件的常用库与工具汇总(支持 xls 和 xlsx)
  • Linux基本指令,对路径的认识
  • SringBoot入门
  • uvm-tlm-sockets
  • 关于MyBatis 的懒加载(Lazy Loading)机制
  • 腾讯云市场排名
  • linux进程概念(三)进程状态
  • COZE 开源,新一代 AI Agent 本地部署一条龙
  • 借助 Wisdom SSH 的 AI 助手构建 Linux 开发环境
  • 2. Agent与 React流程
  • 智能Agent场景实战指南 Day 26:Agent评估与性能优化
  • 【面试场景题】随机立减金额计算
  • 三十四、【Linux常用工具】rsync+inotify实时同步演示
  • 游卡,快手26届秋招内推
  • Cortex-M处理器的优势?
  • 解决Nginx的HTTPS跨域内容显示问题
  • Linux日志管理和时钟同步配置指南
  • DFT设计中的不同阶段介绍
  • 【C语言类型转换坑】乘法溢出隐患发现与正确写法
  • 嵌入式系统分层开发:架构模式与工程实践(二)(创建任务篇(二))
  • CSS-in-JS 动态主题切换与首屏渲染优化
  • 人类语言驱动物理机制建模的AIVC
  • Zynq SoC 中断控制系统设计与实现:基于 GPIO 的中断驱动开发
  • 亚马逊Kiro重塑AI编程:从“氛围编码”到规范驱动的革命
  • 论文研读(2025 KDD):细粒度人体轨迹建模