Winform 渐变色 调色板

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

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

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

colorPanel.BackgroundImage = colorBitmap;

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

代码:

cs 复制代码
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博客

相关推荐
学以智用1 天前
C# Console App(控制台应用)模板详解
.net
宝桥南山2 天前
.NET 11 - 尝试一下Minimal API中的异步验证新特性
microsoft·微软·c#·asp.net·.net·.netcore
无风听海2 天前
深入理解.NET中的 Lazy<T>
服务器·php·.net
海盗12342 天前
微软技术日报 2026-10-14:十月补丁 1411 个漏洞,.NET 11 交出 RC2
人工智能·microsoft·机器人·aigc·.net
学以智用2 天前
.NET WinForms / WPF / Blazor 模板详解
.net
黄一一9112432 天前
吾爱大佬开发,离线可用!PDF文件处理工具,本地网页版文件-浏览器里就能搞定,所有操作系统可用
windows·安全·阿里云·pdf·.net·开源软件
慧都小妮子3 天前
MSG 附件太占内存?Aspose.Email for .NET 26.9 延迟加载
c#·.net·aspose·内存优化·延迟加载·aspose.email·附件内存
学以智用3 天前
ASP.NET Core 项目模板详解:Web应用 / Web API / MVC / Razor Pages
.net
IT规划师4 天前
MQTT实战 - 用了8年MQTT,我为什么还要重新系统啃一遍(一)
物联网·.net
邹肖桥4 天前
使用S7.net动态库对西门子Plc S7-1200进行通讯操作
.net