0
我正在試圖用另一個圖像覆蓋圖像以提供水印,但它必須覆蓋整個源圖像。問題是提供的水印是600x600,並且源圖像可以具有任何大小和高寬比。到目前爲止,它並未完全覆蓋源圖像。如何使用C#透明地完全覆蓋圖像Graphics.DrawImage
我正在試圖用另一個圖像覆蓋圖像以提供水印,但它必須覆蓋整個源圖像。問題是提供的水印是600x600,並且源圖像可以具有任何大小和高寬比。到目前爲止,它並未完全覆蓋源圖像。如何使用C#透明地完全覆蓋圖像Graphics.DrawImage
我像這樣解決了它(以一種非常直接的方式)。
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)。
有一個[重載](https://msdn.microsoft.com/en-us/library/ktyfbs10(v = vs.110).aspx)的DrawImage,讓你指定源和目標直腸段。 – TaW
如果寬高比差別很大,你可以考慮一個平鋪方法,btw .. – TaW
@TaW所以,評論中的鏈接是好的? :-) –