【问题标题】:How to render a gradient in memory using GDI(+)如何使用 GDI(+) 在内存中渲染渐变
【发布时间】:2010-10-30 05:50:17
【问题描述】:

我正在尝试在内存中呈现尺寸为 1x16 的 Image 对象。此图像用作平铺背景。渐变本身应该以非线性方式具有 3 种颜色。

像素 1 到 6:渐变颜色 1 到颜色 2

像素 7 到 16:渐变颜色 3 到颜色 4

【问题讨论】:

    标签: winforms graphics gdi+ gdi


    【解决方案1】:

    我刚刚发现自己该怎么做。我期待这样的答案:

            Bitmap bmp = new Bitmap(1, 16);
            Graphics g = Graphics.FromImage(bmp);
    
            System.Drawing.Drawing2D.LinearGradientBrush b1 =
                new System.Drawing.Drawing2D.LinearGradientBrush(
                    new Rectangle(0, 0, 1, 6),
                    Color1,
                    Color2,
                    System.Drawing.Drawing2D.LinearGradientMode.Vertical);
    
            System.Drawing.Drawing2D.LinearGradientBrush b2 =
                new System.Drawing.Drawing2D.LinearGradientBrush(
                    new Rectangle(0, 7, 1, 16),
                    Color3,
                    Color4,
                    System.Drawing.Drawing2D.LinearGradientMode.Vertical);
    
            g.FillRectangle(b1, new Rectangle(0, 0, 1, 6));
            g.FillRectangle(b2, new Rectangle(0, 7, 1, 16));
            g.Dispose();
    

    位图 bmp 现在有 2 个渐变。

    【讨论】:

      【解决方案2】:

      您可以使用GradientFill 函数。

      对于自定义解决方案,请查看article 是否可以提供帮助。

      【讨论】:

      • 感谢您的提示。我更多的是寻找托管 GDI(首选)C# 解决方案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-03
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      • 1970-01-01
      • 2011-02-05
      • 2015-11-19
      相关资源
      最近更新 更多