当前位置:K88软件开发文章中心编程语言.NET.NET01 → 文章内容

在C#的RichTextBox控件中添加图片的方法

减小字体 增大字体 作者:佚名  来源:翔宇亭IT乐园  发布时间:2018-12-31 11:36:45

:2011-11-26 16:27:39

自己编写了一个记事本程序,记事本程序使用WinForm的RichTextBox控件实现。这个程序在Windows记事本的基础上添加了改变记事本背景颜色,设置记事本背景图片、改变记事本字体颜色和样式的功能。同时,还想在记事本中添加相关图片,而RichTextBox控件并没有提供添加图片功能,于是在网上找了一些资料,根据这些资料终于实现了这个功能。

因为RichTextBox控件在运行过程中允许往里粘贴图片等内容,于是网上的解决方案大多是借助这一特点而实现的。其实现的基本思想如下:

(1)将要添加的图片保存到剪贴板中,这主要借助Clipboard类的SetDataObject方法

(2)将剪贴板中的内容粘贴到RichTextBoxBox控件中,这主要使用RichTextBox控件的Paste方法。

设计步骤:

(1)定义打开文件通用对话框的实例:

OpenFileDialog openJpgDialog = newOpenFileDialog();

(2)指定打开文件通用对话框的相关属性:

openJpgDialog.Filter = "JPG图片(*.jpg,*.jpeg)|*.jpg|BMP图片(*.bmp)|*.bmp|GIF图片(*.gif)|*.gif|PNG图片|*.png";    //设置文件名的筛选字符串
openJpgDialog.FilterIndex = 0;   //设置对话框默认的文件类型索引
openJpgDialog.RestoreDirectory = true;   //关闭对话框后,回到原有文件路径
openJpgDialog.Multiselect = false;      //不允许选择多个图片

(3)打开通用对话框,并将选择的图片插入到当前RichTextBox中:

if (openJpgDialog.ShowDialog() == DialogResult.OK)
{
       filePath = openJpgDialog.FileName;
       Image img = Image.FromFile(filePath);
       Clipboard.SetDataObject(img);
       richTextBox1.Paste(DataFormats.GetFormat(DataFormats.Bitmap));
}

完整的源代码如下:

 string filePath;
 OpenFileDialog openJpgDialog = newOpenFileDialog();
 openJpgDialog.Filter = "JPG图片(*.jpg,*.jpeg)|*.jpg|BMP图片(*.bmp)|*.bmp|GIF图片(*.gif)|*.gif|PNG图片|*.png";
 openJpgDialog.FilterIndex = 0;
 openJpgDialog.RestoreDirectory = true;
 openJpgDialog.Multiselect = false;
 if (openJpgDialog.ShowDialog() == DialogResult.OK)
 {
      filePath = openJpgDialog.FileName;
      Image img = Image.FromFile(filePath);
      Clipboard.SetDataObject(img);
      richTextBox1.Paste(DataFormats.GetFormat(DataFormats.Bitmap));
 }

以上代码是写在菜单点击事件处理程序中。运行结果如下:

 
我的记事本:插入图片菜单


我的记事本插入图片效果

本文为本站原创,如需转载,请注明出处见来源(http://www.k88.net/


在C#的RichTextBox控件中添加图片的方法