如何使用 GDI(+) 在内存中渲染渐变

发布于 2024-07-23 06:44:21 字数 138 浏览 5 评论 0原文

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

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

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

I am trying to render an Image object in memory with the dimensions 1x16. This image is used as a tiled background. The gradient itself should have 3 colors in a non-linear fashion.

Pixel 1 to 6: Gradient Color 1 to Color 2

Pixel 7 to 16: Gradient Color 3 to Color 4

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

单挑你×的.吻 2024-07-30 06:44:21

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

        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 梯度。

I just found out myself how to do it. I was expecting an answer like this:

        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();

The Bitmap bmp has now the 2 gradient.

-残月青衣踏尘吟 2024-07-30 06:44:21

您可以使用 GradientFill 函数。

对于自定义解决方案,请查看这篇文章是否有帮助。

You could use the GradientFill function.

For a custom solution, see if this article can help.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文