首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用C# Graphics.DrawImage完全覆盖透明图像

如何使用C# Graphics.DrawImage完全覆盖透明图像
EN

Stack Overflow用户
提问于 2017-07-18 02:01:14
回答 1查看 74关注 0票数 0

我正在尝试用另一张图片覆盖另一张图片,以便提供水印,但它必须覆盖整个源图像。问题是,提供的水印是600x600,并且源图像可以具有任意大小和宽高比。到目前为止,它还没有完全覆盖源图像。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-18 02:38:50

我像这样(以一种非常简单的方式)解决了它。

代码语言:javascript
复制
    private void button1_Click(object sender, EventArgs e)
    {
        var image = new Bitmap( this.pictureBox1.Image.Width, this.pictureBox1.Image.Height);
        var rect = new Rectangle(0, 0, this.pictureBox1.Image.Width, this.pictureBox1.Image.Height);

        Graphics graphics = Graphics.FromImage(image);
        graphics.DrawImage(this.pictureBox1.Image, 0, 0);

        var waterMarkImage = new Bitmap(this.pictureBox2.Image.Width, this.pictureBox2.Image.Height);
        for (int y = 0; y < waterMarkImage.Height; y++)
        {
            for (int x = 0; x < waterMarkImage.Width; x++)
            {
                var color = (this.pictureBox2.Image as Bitmap).GetPixel(x, y);
                color = Color.FromArgb(50, color.R, color.G, color.B);
                waterMarkImage.SetPixel(x, y, color);
            }
        }

        graphics.DrawImage(waterMarkImage, rect);

        this.pictureBox3.Image = image;
    }

在pictureBox1中,我加载了主图像。在pictureBox2中,我加载了“水印”。在事件处理程序中,我创建了结果图像(第一个主图像,然后第二个),并将其加载到pictureBox3中。为了获得水印效果,我减少了颜色的alpha分量(我将其设置为50)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45150770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档