自己编写了一个记事本程序,记事本程序使用WinForm的RichTextBox控件实现。这个程序在Windows记事本的基础上添加了改变记事本背景颜色,设置记事本背景图片、改变记事本字体颜色和样式的功能。同时,还想在记事本中添加相关图片,而RichTextBox控件并没有提供添加图片功能,于是在网上找了一些资料,根据这些资料终于实现了这个功能。
因为RichTextBox控件在运行过程中允许往里粘贴图片等内容,于是网上的解决方案大多是借助这一特点而实现的。其实现的基本思想如下:
(1)将要添加的图片保存到剪贴板中,这主要借助Clipboard类的SetDataObject方法
(2)将剪贴板中的内容粘贴到RichTextBoxBox控件中,这主要使用RichTextBox控件的Paste方法。
设计步骤:
(1)定义打开文件通用对话框的实例:
OpenFileDialog openJpgDialog = new OpenFileDialog();
(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 = new OpenFileDialog();
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));
}
以上代码是写在菜单点击事件处理程序中。运行结果如下:
我的记事本:插入图片菜单
我的记事本插入图片效果
新闻热点
疑难解答