zoukankan      html  css  js  c++  java
  • 在 dotnet core (C#)下的颜色渐变

    直接使用等比例抽样算法,连同透明度一起计算。

     1 public IList<Color> ShadeColors(Color c1, Color c2, int resultCount)
     2 {
     3     var result = new List<Color>();
     4     for (int i = 0; i < resultCount; i++)
     5     {
     6         var a = c1.A + (int)((c2.A - c1.A) * i / resultCount);
     7         var r = c1.R + (int)((c2.R - c1.R) * i / resultCount);
     8         var g = c1.G + (int)((c2.G - c1.G) * i / resultCount);
     9         var b = c1.B + (int)((c2.B - c1.B) * i / resultCount);
    10         var c = Color.FromArgb(a, r, g, b);
    11         result.Add(c);
    12     }
    13     return result;
    14 }

    输出图片

    如果要输出图片可能需要安装libgdiplus,如果缺少依赖的话, 详见CoreCompat/CoreCompat。在Ubuntu执行命令:

    RUN apt-get update 
        && apt-get install -y --allow-unauthenticated 
        libc6-dev 
        libgdiplus 
        libx11-dev 
        && rm -rf /var/lib/apt/lists/*

    输出图片的代码:

     1 static void Main(string[] args)
     2 {
     3     int size = 300;
     4     int h = 30;
     5     var bmp = new Bitmap(size, h, PixelFormat.Format32bppArgb);
     6     Color c1 = Color.FromArgb(0xff, Color.Green);
     7     Color c2 = Color.FromArgb(0x4e, Color.Yellow);
     8     var cs = ShadeColors(c1, c2, size);
     9     for (int i = 0; i < size; i++)
    10     {
    11         for (int j = 0; j < h; j++)
    12         {
    13             bmp.SetPixel(i, j, cs[i]);
    14         }
    15     }
    16     bmp.Save("shade.png", ImageFormat.Png);
    17     Console.WriteLine("Hello World!");
    18     // Console.ReadLine();
    19 }

    最终输出的图片shade.png

  • 相关阅读:
    vue响应式原理之Observer、Dep、Watcher
    vscode 常用插件
    脚手架搭建vue项目
    搭建框架
    select 自匹配问题
    Winform 根据Point截图并保存到指定路径
    C# Screen 类(多屏幕开发)
    C# WindowsService安装与卸载
    WebService WSDL动态访问
    C# 操作ini文件
  • 原文地址:https://www.cnblogs.com/hsxian/p/10846213.html
Copyright © 2011-2022 走看看