需求案例:
类似于QQ或Wx的聊天输入框 用户可以直接通过粘贴图片的方式发送出去 甚至不需要保存图片到本地,通过微信自带的截图也能够将图片直接粘贴上去
如果也需要做一个类似的功能,winform提供了RichTextBox这个控件,可以支持这种粘贴图片的操作
具体实现思路如下:
如下图所示,一般来说图片上传需要通过选择附件的按钮带出来图片然后进行上传,这样的话如果需要一直这样反复操作会比较麻烦,所以就通过下方RichTextBox实现类似微信直接粘贴图片的功能
下面是RichTextBox的文本框 我直接粘贴了一个图片上去(也可粘贴多个);
首先选择附件也是将本地文件选择后将本地图片路径传给接口进行一次文件上传到服务器指定目录里,
那么按这样理解,是不是就可以直接理解为我粘贴的图片也当作是本地的一个图片路径再传给接口就好了?
所以,假设有一个提交按钮,当我点提交后就解析RichTextBox输入框内为图片格式的数据出来
并且将这个图片存放到本地电脑中的临时目录中即可;代码参照如下:
//提交事件
private void btnOK_Click(object sender, EventArgs e){
for (int i = 0; i < richTextBox1.TextLength; i++)
{
richTextBox1.Select(i, 1);
RichTextBoxSelectionTypes rt = richTextBox1.SelectionType;
MessageBox.Show(rt.ToString());
if (rt == RichTextBoxSelectionTypes.Object)
{
//也可能是其它的类型
MessageBox.Show("这是一个图片");
richTextBox1.Copy();
Image img = Clipboard.GetImage();
if (img != null)
{
img.Save("e://" + i.ToString() + ".bmp"); //将图片文件保存在临时文件目录中,本次只做简单演示,所以固定保存在了e盘中,根据实际开发来更改
img.Dispose();
}
}
}
}
这样就在本地保存了粘贴的图片,例如:
最后再将这个图片的路径传给上传文件接口即可保存,这样就平替了选择附件这一操作。
可以参考以上思路进行项目实战操作,仅供参考学习,如有不对,可以指出一起学习
个人认为RichTextBox里面的一些属性不是很好控制,内容比较多杂。