C# winform修改背景图 控件双向绑定 拖拽打开图片

修改背景图

说明

这里我准备基于百度飞桨PaddleSeg项目的人像分割模块做一个人像抠图,这里顺便用上了双向绑定和图片拖拽打开。

下面就是示例:

用颜色替换
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

用背景图替换

在这里插入图片描述

在这里插入图片描述

保存成功后的图片

在这里插入图片描述

一、使用百度飞桨PaddleSeg

 //初始化 引擎engine = new PaddleSegMattingEngine();//参数parameter = new MattingParameter();//parameter.outbgfile = true;//输出mask图//parameter.bgtransparent = true;//背景透明engine.Init(modelPath, parameter);

二、下拉框双向绑定

            comb.DataSource = lstCom;comb.DisplayMember = "Name";comb.DropDownStyle = ComboBoxStyle.DropDownList;picOld.DataBindings.Add("SizeMode", lstCom, "Value");picNew.DataBindings.Add("SizeMode", lstCom, "Value");
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace SegSharp
{public class ComBoxModel : INotifyPropertyChanged{string _name;PictureBoxSizeMode _value;public string Name{get { return _name; }set{_name = value;OnPropertyChanged(nameof(Name));}}public PictureBoxSizeMode Value{get { return _value; }set{_value = value;OnPropertyChanged(nameof(Value));}}public event PropertyChangedEventHandler PropertyChanged;protected virtual void OnPropertyChanged(string propertyName)  //属性变更通知{//if (PropertyChanged != null)//{//    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));//}PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));}}
}

三、图片拖拽打开

先将form的AllowDrop设置为true

在这里插入图片描述

利用动态库模拟事件

 //函数从动态链接库中倒入(模拟鼠标事件)[System.Runtime.InteropServices.DllImport("user32")]private static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);const int MOUSEEVENTF_LEFTDOWN = 0x0002; //模拟鼠标左键按下const int MOUSEEVENTF_LEFTUP = 0x0004; //模拟鼠标左键抬起 //设置静态字段传递图片路径参数public static string path_url;private void Form1_DragDrop(object sender, DragEventArgs e){//获取当前推拽图片的路径string path1 = ((Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString(); ;path_url = path1;//模拟鼠标释放鼠标左键的时事件mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_LEFTUP, Cursor.Position.X, Cursor.Position.Y, 0, 0);}private void Form1_DragEnter(object sender, DragEventArgs e){if (e.Data.GetDataPresent(DataFormats.FileDrop))//需求有一需要从QQ的聊天记录中拖拽图片到WinForm窗体中,用ALL会出现QQ的聊天信息中的图片丢失//Link和Move不能从QQ的聊天记录中拖拽图片到WinForm窗体中,Copy和Scroll都可以实现,推荐使用Copye.Effect = DragDropEffects.Copy;elsee.Effect = DragDropEffects.None;}private void picOld_MouseUp(object sender, MouseEventArgs e){//给PictureBox设置图片路径picOld.ImageLocation = path_url;txtName.Text = path_url;}

在这里插入图片描述

成功啦~

源码下载

下篇准备利用OCR做一个车牌识别,期待一下~


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/760445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何配置VS Code环境

一、下载 Visual Studio Code - Code Editing. Redefined 二、傻瓜式安装 如果出现没有安装路径选择,则看下面图片 经过上面操作后,可以修改路径 三、按照下面步骤配置环境变量即可 Visual Studio Code 中的 C 和 MinGW-w64 入门

数据库学习之数据库基本知识

什么是数据库 数据:描述事物地符号记录,包括单不限于数字、文字、图形、图像、声音、语言等。数据有多种形式,这个内容都可以经过式子化地处理后存入计算机。 数据库:数据仓库。是长期存放再计算机内、有组织、可共享地大量数据…

UE5 C++增强输入

一.创建charactor,并且包含增强输入相关的头文件 1.项目名.build.cs。添加模块“EnhancedInput”,方便找到头文件和映射的一些文件。 PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine&q…

在基于Android相机预览的CV应用程序中使用 OpenCL

查看:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV4.9.0在Android 开发简介 下一篇:在 MacOS 中安装 本指南旨在帮助您在基于 Android 相机预览的 CV 应用程序中使用 OpenCL ™。教程是为 Android Studio 20…

用图解说明mysql 行锁加锁规则

加锁原则 原则 1:加锁的基本单位是 next-key lock。希望你还记得,next-key lock 是前开后闭区间。原则 2:查找过程中访问到的对象才会加锁。优化 1:索引上的等值查询,给唯一索引加锁的时候,next-key lock …

【Java】Oracle发布Java22最新版本

甲骨文(ORACLE)已经于2023年3月19日正式发布了最新版本的JDK,版本号:22 根据官方声明,Java 22 (Oracle JDK 22) 在性能、稳定性和安全性方面进行了数千种改进,包括对Java 语言、其API 和性能,以…

python vtk读取vtk文件

参考: https://cloud.tencent.com/developer/ask/sof/101993637 方法一:使用pyvtk 要使用Python读取VTK文件,可以使用pyvtk库。首先,确保已经安装了pyvtk。如果没有安装,可以通过pip安装: csharp pip ins…

Github基本功能和使用技巧

基础功能 创建仓库(Repository):在GitHub上创建一个新的仓库,可以通过点击页面右上角的“New”按钮开始。选择仓库的名称、描述和许可证等信息,并选择是否将仓库设置为公开或私有。 克隆仓库(Clone&#x…

基于stable diffusion的IP海报生成

【AIGC】只要10秒,AI生成IP海报,解放双手!!!在AIGC市场发展的趋势下,如何帮助设计工作者解放双手。本文将从图像生成方向切入,帮助大家体系化的学习Stable diffusion的使用,完成自有…

php 对接IronSource海外广告平台收益接口Reporting API

今天对接的是IronSource广告reporting api接口,拉取广告收益回来自己做统计。记录分享给大家 首先是文档地址,进入到IronSource后台就能看到文档地址以及参数: 文档地址:https://developers.is.com/ironsource-mobile/air/reporting/ 在这里插…

【Rust】——String集合

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

高新技术企业培育认定条件

高新技术企业认定申报条件主要包括企业基本条件、技术创新能力和成果、知识产权、人才队伍建设等方面。 1.企业基本条件 (1)具有独立法人资格; (2)注册地在中国境内; (3)注册资本…

Mybatis一级缓存和二级缓存区别

Mybatis一级缓存 1.为什么需要Mybatis一级缓存 当我们使用Mybatis进行数据库的操作时候,会创建一个SqlSession来进行一次数据库的会话,会话结束则关闭SqlSession对象。 如果我们很有可能多次查询完全相同的sql语句,每一次查询都查询一次数据…

基于Python3的数据结构与算法 - 16 链表

目录 链表 1. 创建链表 2. 链表的插入和删除 3. 双链表 4. 链表总结 链表 链表是由一系列节点组成的元素集合。每个节点包含两部分,数据域item和指向下一个节点得指针next。通过节点之间的相互连接,最终串联成一个链表。 class Node:def __init…

如何利用人工智能技术实现企业营销效率提升10倍(上)

01. 品牌营销面临越来越大的挑战 在当前行业下行周期,品牌营销正面临着前所未有的挑战。首当其冲的是高昂的营销费用,这使得企业在投入资源时更加谨慎,同时也需要寻求更加高效的营销手段来确保投入产出比的最大化。其次,由于缺乏…

Linux系统本地部署Docker Compose UI服务结合内网穿透实现公网访问

文章目录 1. 安装Docker2. 检查本地docker环境3. 安装cpolar内网穿透4. 使用固定二级子域名地址远程访问 Docker Compose UI是Docker Compose的web界面。这个项目的目标是在Docker Compose之上提供一个最小的HTTP API,同时保持与Docker Compose CLI的完全互操作性。…

探讨苹果 Vision Pro 的空间视频(术语辨析、关键技术、思考)

背景:一位资深视频技术从业者在 Pixvana 工作,积累了丰富的捕获、处理、编码、流传和播放空间媒体经验。 一、术语 空间视频:传统的 3D 视频,呈矩形,包含左右眼视图,如 iPhone15 Pro 和 Vision Pro 可录制。沉浸式视频:非矩形的环绕式视频体验,通常由两个或多个传感器…

Unity 学习笔记 5.控制飞机飞行

目录 1.摄像机跟随的方法 2.鼠标按键响应 3.键盘按键响应 4.导入素材 5.让飞机向前飞 6.摄像机跟随飞机移动 7.鼠标控制飞机倾斜 8.键盘控制飞机飞行 下载源码 UnityPackage 1.摄像机跟随的方法 2.鼠标按键响应 3.键盘按键响应 4.导入素材 下载素材 步骤: 将…

蓝桥杯 第3217题 简单的异或难题 C++ Java Python

题目 思路和解题方法 计算给定数组中子数组异或和的问题。它采用了前缀异或的方法来预处理数组,然后对于每个查询,通过异或操作计算子数组的异或和。 读取输入的数组,并计算每个位置的前缀异或和。对于每个查询,读取查询的左右边界…

css使用变量

vue3单文件SFC新特性在css里可以使用变量&#xff0c;具体使用如下&#xff1a; <template><div class"home-view"><span>测试</span><p>测试2</p></div> </template><script setup lang"ts"> imp…