如何从webBrowser控件保存图像 [英] How to Save Image from webBrowser Control
问题描述
大家好
我想在没有用户交互的情况下将图像从webBrowser控件保存到硬盘(仅限程序)。而且我不想使用WebClient或System :: Net :: WebRequest类,如果我使用这些类,我必须下载图像两次(一次在
webBrowser控件中,另一次在类中)
I'm tring to save images from webBrowser control to hard disk without a user interaction(by programm only). And I do not want to Use WebClient or System::Net::WebRequest classes becouse, if i use these classes i have to download the image twice (once in webBrowser control and another in classes)
我搜索并找到以下代码
using namespace System::Drawing;
using namespace System::Runtime::InteropServices;
[ComImport, InterfaceType(ComInterfaceType::InterfaceIsIUnknown), Guid("3050F669-98B5-11CF-BB82-00AA00BDCE0B")]
interface class IHTMLElementRenderFixed
{
void DrawToDC([In]IntPtr hdc);
void SetDocumentPrinter([In, MarshalAs(UnmanagedType::BStr)]String^ bstrPrinterName, [In]IntPtr hdc);
};
...
mshtml::HTMLDocument^ doc = safe_cast<mshtml::HTMLDocument^>(webbrowser->Document);
mshtml::IHTMLElementCollection^ collImages = doc->getElementsByTagName(L"img");
for (int i = 0; i < collImages->length; ++i)
{
mshtml::IHTMLImgElement^ img = safe_cast<mshtml::IHTMLImgElement^>(collImages->item(nullptr, i));
IHTMLElementRenderFixed^ render = safe_cast<IHTMLElementRenderFixed^>(img);
Bitmap^ bmp = gcnew Bitmap(img->width, img->height);
Graphics^ g = Graphics::FromImage(bmp);
IntPtr hdc = g->GetHdc();
render->DrawToDC(hdc);
g->ReleaseHdc(hdc);
delete g;
Image^ existing = pictureBox1->Image;
pictureBox1->Image = bmp;
delete existing;
MessageBox::Show(L"pause so you can see the picture");
}
推荐答案
请查找示例代码
private void Form1_Load( object
sender, EventArgs e)
private void Form1_Load(object sender, EventArgs e)
{
this .webBrowser1.Navigate(" http://www.microsoft.com"
);
this .webBrowser1.Navigate("http://www.microsoft.com" );
}
private void button1_Click( object
sender, EventArgs e)
private void button1_Click(object sender, EventArgs e)
{
new System.Net.WebClient();
System.Net.WebClient wc = new System.Net.WebClient();
this .webBrowser1.Document.GetElementsByTagName(" img"
);
HtmlElementCollection imgs = this .webBrowser1.Document.GetElementsByTagName("img" );
for ( int i = 0; i < imgs.Count; i ++)
for (int i = 0; i < imgs.Count; i++)
{
" src"
), " c:\\ images" + i.ToString() + " .jpg" );
wc.DownloadFile(imgs[i].GetAttribute("src" ), "c:\\images" + i.ToString() + ".jpg" );
}
< span style ="font-size:9pt; font-family:" Courier New" }
}
如果它对您有用,请标记为答案。
有关免费源代码,请访问
http://sourcecode-world.blogspot.com/
这篇关于如何从webBrowser控件保存图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!