从WebBrowser控件中保存图片运行以下代码,但是生成的位图向下移动了大约半英寸,并在底部被截断。我检查了图像的宽度和高度,它创建了一个正确大小的图像,只是图像内容被向下移动并被截断了。我很难过......有什么想法吗?使用mshtml;使用系统绘图;使用System.Runtime.InteropServices;[ComImport,InterfaceType((short)1),Guid("3050F669-98B5-11CF-BB82-00AA00BDCE0B")]privateinterfaceIHTMLElementRenderFixed{voidDrawToDC(IntPtrhdc);voidSetDocumentPrinter(stringbstrPrinterName,IntPtrhdc);}publicBitmapGetImage(stringid){HtmlElemente=webBrowser1.;位图bmp=newBitmap(img.width,img.height);图形g=Graphics.FromImage(bmp);IntPtrhdc=g.GetHdc();render.DrawToDC(hdc);g.ReleaseHdc(hdc);返回bmp;你正在做的是渲染图像,因为它都是由浏览器设计的。不知道这是不是你想要的?如果您只是想下载图片,使用网络请求更容易解决,如其他答案中所述。如果你真的想渲染而不是先改变Bitmapbmp=newBitmap(img.width,img.height);到位图bmp=newBitmap(e.OffsetRectangle.Width,e.OffsetRectangle.Height);现在您将获得一个完全呈现的Web浏览器图像。如果您想要一个完美的解决方案,即使对于大图像,您也必须滚动并获取图像块。首先,我相信您得到的img元素的大小与实际图像大小不同。其次,为什么不直接使用System.Net.WebRequest并从URL下载实际图像。您已经有了URL并且已经有了IMG元素信息,事实上,如果您没有显示网络浏览器,请尝试使用System.Net.WebRequest,这样您就可以验证您获得的内容类型是实际图像还是占位符。http://sofzh.miximages.com/c%23/ml对象库SubDowork()Dimx=WebBrowser1.Document.GetElementsByTagName(img)ForiAsInteger=0Tox.Count–1Ifx(i)。GetAttribute(alt)=CaptchaimageThenGetImage(x(i)).Save(captcha.png”,Imaging.ImageFormat.Png)EndIfNextEndSub公共接口IHTMLElementRenderFixedSubDrawToDC(hdcAsIntPtr)SubSetDocumentPrinter(bstrPrinterNameAsString,hdcAsIntPtr)结束接口PublicFunctionGetImage(eAsHtmlElement)AsBitmap.Width,e.OffsetRectangle.Height)DimgAsGraphics=Graphics.FromImage(bmp)DimhdcAsIntPtr=g.GetHdc()render.DrawToDC(hdc)g.ReleaseHdc(hdc)ReturnbmpEndFunctionC#学习教程:从WebBrowser控件保存图像共享的所有内容。如果对你有用,需要了解更多C#学习教程,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
