C# Winform 入门(16)之图片合成

发布于:2025-04-15 ⋅ 阅读:(18) ⋅ 点赞:(0)

图像拼接效果展示

选择图片一、选择图片二

  private void ImageSelect1_Click(object sender, EventArgs e)
  {
      OpenFileDialog ofd = new OpenFileDialog();
      ofd.Title = "请选择图片";
      ofd.InitialDirectory = "D:\\Image";
      ofd.Filter = "图片|*.gif;*.jpg;*.jpeg;*.bmp;*.png;*.jfif";
      
      if(ofd.ShowDialog() == DialogResult.OK)
      {
          pictureBox1.Image=Image.FromFile(ofd.FileName);
      }
  }

  private void ImageSelect2_Click(object sender, EventArgs e)
  {
      OpenFileDialog ofd = new OpenFileDialog();
      ofd.Title = "请选择图片";
      ofd.InitialDirectory = "D:\\Image";
      ofd.Filter = "图片|*.gif;*.jpg;*.jpeg;*.bmp;*.png;*.jfif";

      if (ofd.ShowDialog() == DialogResult.OK)
      {
          pictureBox2.Image = Image.FromFile(ofd.FileName);
      }
  }

封装图像拼接

 Bitmap MergeImage(Bitmap p1,Bitmap p2)
 {
     Bitmap bitmap=new Bitmap(p1.Width,p1.Height);
     //从 Bitmap 创建 Graphics 对象
     Graphics g = Graphics.FromImage(bitmap);
     // 0,0:目标图形表面的起始坐标(x=0,y=0),左上角开始绘制
     // pictureBox.Width/2:图像在目标图像表面上的宽度,这里是pictrueBox3 控件宽度的一半
     // pictureBox.Height: 图像在目标图形表面上高度,等于pictureBox3 控件的高度
     g.DrawImage(p1, 0, 0,pictureBox3.Width/2, pictureBox3.Height);
     g.DrawImage(p2, pictureBox3.Width/2-1, 0,pictureBox3.Width/2, pictureBox3.Height);
     return bitmap;
 }

 合并图像

 private void Merge_Click(object sender, EventArgs e)
 {
     if(pictureBox1.Image==null||pictureBox2.Image==null)
     {
         MessageBox.Show("请先进行选图","提示",MessageBoxButtons.OK, MessageBoxIcon.Error);
         return;
     }
     var bmp = MergeImage((Bitmap)pictureBox1.Image, (Bitmap)pictureBox2.Image);
     pictureBox3.Image = bmp;
 }


网站公告

今日签到

点亮在社区的每一天
去签到