当前位置: 首页 > 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;
 }

http://www.dtcms.com/a/131495.html

相关文章:

  • 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++ 研究生组
  • 架构师面试(二十九):TCP Socket 编程
  • MapStruct复制失败,属性为null,与lombok有关系
  • 【Flink运行时架构】重要概念
  • linux多线(进)程编程——(1)前置知识
  • HTML5/JS/Vue与Java后端技术类比(AI创作)
  • SpringBoot对接火山引擎大模型api实现图片识别与分析
  • 深入理解Liunx文件系统与日志分析
  • 尚硅谷2019版Java网络编程笔记
  • HBase客户端metacache缓存过期报错
  • Mybatis 中 mappers标签 package的使用