当前位置: 首页 > news >正文

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

图像拼接效果展示

选择图片一、选择图片二

  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;
 }

相关文章:

  • Linux--线程概念与控制
  • 突破边界:从 C# 到 Python 的范式跃迁与实战指南
  • 图像分割基础学习
  • vLLM部署Qwen2.5-Omni 提供API的详细步骤
  • CSE lesson2 chrony服务器
  • CSS margin(外边距)学习笔记
  • Redash 25.1.0 简配部署
  • vscode中gcc编译器中文路径调试成功方法
  • 免费送源码:Java+SpringBoot+MySQL SpringBoot网上宠物领养管理系统 计算机毕业设计原创定制
  • zk源码—7.ZAB协议和数据存储一
  • 五子棋(测试报告)
  • Web前端之Vue+Element实现表格动态复杂的合并行功能、localeCompare、forEach、table、push、sort、Map
  • JWT认证服务与授权 .netCore
  • pywebview 常用问题分享
  • HashTable,HashMap,ConcurrentHashMap之间的区别
  • docker的目录挂载与卷映射
  • Nginx部署spa单页面的小bug
  • SQLite + Redis = Redka
  • NCCL使用指南-进阶篇
  • (个人题解)第十六届蓝桥杯大赛软件赛省赛C/C++ 研究生组
  • 五一去哪儿|外国朋友来中国,“买买买”成为跨境旅游新趋势
  • 胸外科专家查出肺多发结节,说了一个可怕的事实……
  • 南部战区位南海海域进行例行巡航
  • 媒体:黑话烂梗包围小学生,“有话好好说”很难吗?
  • 中国人保聘任田耕为副总裁,此前为工行浙江省分行行长
  • 太好玩了!坐进大卫·霍克尼的敞篷车进入他画笔下的四季