急!怎么获取richtextbox中的多张图片,并保存(winform)

yuquan1987 2010-04-19 05:06:42
各位大哥,我先在需要实现一个功能;我先描述哈;第一:现在我有一个richtextbox 我直接用qq的ctrl+alt+a截图,然后再ctrl+v到richtextbox中,(我可能会截取多个图到richtextbox中),然后就是要实现将 richtextbox中的多个图保存到我的一个路径中。第二:还是就这个richtextbox,我不是截图,我直接是拖动一张或者多张图到richtextbox中,然后保存。请各位大侠指教小弟。我将感激不尽!来着有分!回答者加分。能解决问题者大大的分!
...全文
1730 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
初吻给了烟 2010-11-20
  • 打赏
  • 举报
回复
555555
yuquan1987 2010-04-21
  • 打赏
  • 举报
回复
我在timer控件中加了
private void timer1_Tick(object sender, EventArgs e)
{
try
{
while (Clipboard.GetImage().Height != 0)
{
this.richTextBox1.Paste();
Clipboard.Clear();
}
}
catch
{ }
}
这个代码。感觉也不错的哦,这样 你可以直接截图 ,然后就自动显示到richtextbox中了。
yuquan1987 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 xingyuebuyu 的回复:]
C# code
private void Form1_Load(object sender, EventArgs e)
{
richTextBox1.EnableAutoDragDrop = true;
richTextBox1.DragEnter+=new DragEventHandler(richTextB……
[/Quote]
高手挺多的。呵呵,谢谢各位大侠的光临,指导。我计划在晚上就结贴。要分的快来踩一哈。呵呵
whowhen21 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 xingyuebuyu 的回复:]
一个图片在richtextbox中会使TextLength增加1.
所以你的richtextbox中如果全是图片那TextLength为多少就有几个图片,如果不全是就进行如下判断


C# code
private void button3_Click(object sender, EventArgs e)
{
for (int i = 0……
[/Quote]
蛮不错的哦~
shiweijian1986 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ly302 的回复:]
C# code
private void button2_Click(object sender, EventArgs e)
{
SaveFileDialog myDlg = new SaveFileDialog();
myDlg.Title = "另存为";
myDlg.OverwritePromp……
[/Quote]
switch 可以改用delegate委托实现
xingyuebuyu 2010-04-20
  • 打赏
  • 举报
回复
一个图片在richtextbox中会使TextLength增加1.
所以你的richtextbox中如果全是图片那TextLength为多少就有几个图片,如果不全是就进行如下判断

  private void button3_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");
img.Dispose();
}
}
}
}
xingyuebuyu 2010-04-20
  • 打赏
  • 举报
回复
        private void Form1_Load(object sender, EventArgs e)
{
richTextBox1.EnableAutoDragDrop = true;
richTextBox1.DragEnter+=new DragEventHandler(richTextBox1_DragEnter);
richTextBox1.DragDrop+=new DragEventHandler(richTextBox1_DragDrop);
}

void richTextBox1_DragDrop(object sender, DragEventArgs e)
{
string[] ar= ((string[])e.Data.GetData(DataFormats.FileDrop));
if (ar == null || ar.Length == 0)
return;

for (int i = 0; i < ar.Length; i++)
{
Clipboard.Clear();
Image img= Image.FromFile(ar[i]);
Clipboard.SetImage(img);

richTextBox1.Select(richTextBox1.TextLength, 0);
richTextBox1.Paste();
}
}
幻想多巴胺 2010-04-20
  • 打赏
  • 举报
回复
yuquan1987 2010-04-20
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 xingyuebuyu 的回复:]
一个图片在richtextbox中会使TextLength增加1.
所以你的richtextbox中如果全是图片那TextLength为多少就有几个图片,如果不全是就进行如下判断


C# code
private void button3_Click(object sender, EventArgs e)
{
for (int i = 0……
[/Quote] 这位大侠的方法还是可以的。基本上解决了我的第一个问题
yuquan1987 2010-04-19
  • 打赏
  • 举报
回复
自己一定要顶起来!!!
yaodan11333 2010-04-19
  • 打赏
  • 举报
回复
一起过来学习~
yuquan1987 2010-04-19
  • 打赏
  • 举报
回复
多些各位来顶。更希望能指导小弟解决这个问题
jlj84237485 2010-04-19
  • 打赏
  • 举报
回复
顶一下
zsuswy 2010-04-19
  • 打赏
  • 举报
回复
第一个问题我随便回答的,随便说说,不一定好使。
看看其他人有没有什么好方法。
yuquan1987 2010-04-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yutian_31 的回复:]
你遍历richtext保存
[/Quote]

还请这位大哥能详细说说。
zsuswy 2010-04-19
  • 打赏
  • 举报
回复
第一个问题思路:
----------------------------------
用代码调整光标到图片的位置,然后设置selection把图片选择住,然后copy到剪贴板保存
zsuswy 2010-04-19
  • 打赏
  • 举报
回复
第二:还是就这个richtextbox,我不是截图,我直接是拖动一张或者多张图到richtextbox中,然后保存。
-------------------------------
DragDrop事件中可以取得
private void Form1_DragDrop(object sender, DragEventArgs e)
{
e.Data ........
}
yuquan1987 2010-04-19
  • 打赏
  • 举报
回复
关键是我的richtextbox中有多张图片 我用什么作为分割,知道有多少张呢?
皇城龙三 2010-04-19
  • 打赏
  • 举报
回复
如果是winform的话,richtextbox控件有一个成员方法:DrawToBitmap

可以把导出来的图片存起来
皇城龙三 2010-04-19
  • 打赏
  • 举报
回复
private void button2_Click(object sender, EventArgs e)
{
SaveFileDialog myDlg = new SaveFileDialog();
myDlg.Title = "另存为";
myDlg.OverwritePrompt = true;
myDlg.Filter = "BMP文件 (*.bmp) | *.bmp|" +
"Gif文件 (*.gif) | *.gif|" +
"JPEG文件 (*.jpg) | *.jpg|" +
"PNG文件 (*.png) | *.png";
myDlg.ShowHelp = true;

if (myDlg.ShowDialog() == DialogResult.OK)
{
string fileName = myDlg.FileName;
string strfileEx = fileName.Remove(0, fileName.Length - 3);
switch (strfileEx)
{
case "bmp":
curBitmap.Save(fileName, ImageFormat.Bmp);
break;

case "jpg":
curBitmap.Save(fileName, ImageFormat.Jpeg);
break;

case "gif":
curBitmap.Save(fileName, ImageFormat.Gif);
break;

case "tif":
curBitmap.Save(fileName, ImageFormat.Tiff);
break;

case "png":
curBitmap.Save(fileName, ImageFormat.Png);
break;

default:
break;
}
}

}
加载更多回复(1)

110,568

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧