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;
}
Ese es el método que uso para las imágenes generadas por php. Está implícito en mi propio WebBrowserClass, que amplía el control del navegador web.
(por lo que "este" = WebBrowser)
pero tenemos que importar la interfaz IHTMLElementRender2, utilizar el método.
[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);
};
me encontré con este método en la web, hace alrededor de 1 año, por lo que si usted busca para que usted puede encontrar más información.
Iwan
Sí que podría utilizar esto, pero con cada petición la imagen está cambiando ... código PHP genera nueva imagen en cada petición, por lo que necesitan exactamente el lo mismo que en WatiN. ¿Tal vez algún enlace a IHtmlDocument o algo así? –
@Baptiste Pernet - Gracias por la respuesta que resolvió mi problema. Gracias una vez más. :) – Bibhu