public Image GetImageFromElement(IHTMLElement Element)
{
int width = (int)Element.style.width;
int height = (int)Element.style.height;
IHTMLElementRender2 render = (IHTMLElementRender2)Element;
Bitmap screenCapture = new Bitmap(width, height);
Rectangle drawRectangle = new Rectangle(0, 0, width, height);
this.DrawToBitmap(screenCapture, drawRectangle);
Graphics graphics = Graphics.FromImage(screenCapture);
IntPtr graphicshdc = graphics.GetHdc();
render.DrawToDC(graphicshdc);
graphics.ReleaseHdc(graphicshdc);
graphics.Dispose();
return screenCapture as Image;
}
Đó là phương pháp tôi sử dụng cho hình ảnh được tạo php. Nó được tích hợp trong WebBrowserClass của riêng tôi, mở rộng điều khiển trình duyệt web.
(như vậy "này" = WebBrowser)
Nhưng chúng ta phải nhập khẩu các giao diện IHTMLElementRender2, sử dụng phương pháp này.
[Guid("3050f669-98b5-11cf-bb82-00aa00bdce0b"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
ComVisible(true),
ComImport]
interface IHTMLElementRender2
{
void DrawToDC([In] IntPtr hDC);
void SetDocumentPrinter([In, MarshalAs(UnmanagedType.BStr)] string bstrPrinterName, [In] IntPtr hDC);
};
Tôi tìm thấy phương pháp này trên web, khoảng 1 năm trước, vì vậy nếu bạn tìm kiếm nó, bạn có thể tìm thêm thông tin.
Iwan
Có, tôi có thể sử dụng điều này, nhưng với tất cả các yêu cầu hình ảnh đang thay đổi ... mã PHP tạo ra hình ảnh mới trên tất cả các yêu cầu, vì vậy tôi cần chính xác giống như trong WatiN. Có lẽ một số ràng buộc với IHtmlDocument hoặc một cái gì đó? –
@Baptiste Pernet - Cảm ơn câu trả lời đã giải quyết được sự cố của tôi. Một lần nữa xin cảm ơn. :) – Bibhu