如何让我的矩形始终在图像的中间,而不知道传入图像的大小

  • 本文关键字:图像 中间 不知道 c# image winforms
  • 更新时间 :
  • 英文 :


尝试添加水印图像到png图像,我已经能够做到这一点,但我想拿出硬编码的大小规则的矩形的水印,并使其始终保持在图像的中心。我怎样才能做到这一点呢?

public Form1()
{
InitializeComponent();
picBox.Parent = this;
picBox.Dock = DockStyle.Fill;
picBox.SizeMode = PictureBoxSizeMode.Zoom;
Bitmap Jpg = new Bitmap(@"C:UserstferreiraDesktop213123.PNG");
using (Bitmap Bmp = new Bitmap(@"C:UserstferreiraDesktoplogo.png"))
{
using (Bitmap WatermarkBmp = new Bitmap(Bmp, Bmp.Width / 1, Bmp.Height / 1))
{
picBox.Image = WatermarkImage(Jpg, WatermarkBmp, new Point(400, 100), 0.40F);
}
}
}
public Bitmap WatermarkImage(Bitmap ImageToWatermark, Bitmap Watermark, Point WatermarkPosition, float Opacity)
{
using (Graphics G = Graphics.FromImage(ImageToWatermark))
{
using (ImageAttributes IA = new ImageAttributes())
{
ColorMatrix CM = new ColorMatrix();
CM.Matrix33 = Opacity;
IA.SetColorMatrix(CM);
G.DrawImage(Watermark, new Rectangle(WatermarkPosition, Watermark.Size), 0, 0, Watermark.Width, Watermark.Height, GraphicsUnit.Pixel, IA);
}
}
return ImageToWatermark;
}

现在图像是硬编码的,但将被删除。如果有人能帮助我使这个水印始终保持居中,我谢谢你。

我用这个漂亮的代码修复了这个问题。

System.Drawing.Image img = System.Drawing.Image.FromFile(JpgFilePath);
Bitmap jpg = new Bitmap(img);
filePath = JpgFilePath;
int Width = jpg.Width;
int Height = jpg.Height;
jpg.SetResolution(300, 300);
WaterMarked = WatermarkImage(jpg, WaterMarkBit, new Point((Width - WaterMarkBit.Width) / 2, (Height - WaterMarkBit.Height) / 2), 0.4F);
WaterMarked.Save(filePath.Replace(".jpg", "") + ".tif", ImageFormat.Tiff);
filesJpgForTif.Add(JpgFilePath.Replace("jpg", "tif"));

使用图像的大小和水印的大小,并除以2,它使图像始终保持居中

最新更新