aquí es la solución que tengo hasta ahora:
// establece el tamaño de nuestro navegador web que sea del mismo tamaño que el ancho de la imagen int , altura; width = webBrowser1.Document.Images [0] .ClientRectangle.Width; height = webBrowser1.Document.Images [0] .ClientRectangle.Height;
webBrowser1.Width = width;
webBrowser1.Height = height;
//scroll vertically to that element
webBrowser1.Document.Images[0].OffsetParent.ScrollIntoView(true);
//calculate x, y offset of the element
int x = webBrowser1.Document.Images[s].OffsetRectangle.Left +
webBrowser1.Document.Images[s].OffsetParent.OffsetRectangle.Left +
webBrowser1.Document.Images[s].OffsetParent.OffsetParent.OffsetRectangle.Left+
webBrowser1.Document.Images[s].OffsetParent.OffsetParent.OffsetParent.OffsetRectangle.Left+
webBrowser1.Document.Images[s].OffsetParent.OffsetParent.OffsetParent.OffsetParent.OffsetRectangle.Left;
int y = webBrowser1.Document.GetElementsByTagName("HTML")[0].ScrollTop;
//now scroll to that element
webBrowser1.Document.Window.ScrollTo(x, y);
ahora este código funciona perfectamente .. pero hay un problema con el cálculo de las compensaciones. Necesito calcular el offsetparent del elemento y luego calcular el offsetparent del offsetparent, etc. Necesito hacer eso dinámicamente sin agregarlo uno por uno ... No sé cómo hacer eso. ¿algunas ideas?
EDIT: aquí es mi última y definitiva versión y funciona con cualquier elemento HTML que se encuentra la posición absoluta de cualquier elemento que quiero ..
public int getXoffset(HtmlElement el)
{
//get element pos
int xPos = el.OffsetRectangle.Left;
//get the parents pos
HtmlElement tempEl = el.OffsetParent;
while (tempEl != null)
{
xPos += tempEl.OffsetRectangle.Left;
tempEl = tempEl.OffsetParent;
}
return xPos;
}
public int getYoffset(HtmlElement el)
{
//get element pos
int yPos = el.OffsetRectangle.Top;
//get the parents pos
HtmlElement tempEl = el.OffsetParent;
while (tempEl != null)
{
yPos += tempEl.OffsetRectangle.Top;
tempEl = tempEl.OffsetParent;
}
return yPos;
}
a continuación, utilizar la posición con:
//now scroll to that element
webBrowser1.Document.Window.ScrollTo(x, y);
done!
lo que estás tratando de lograr? Será mucho más fácil dar una respuesta una vez que surja el problema real. – agradl
Quiero tomar una captura de pantalla para un elemento específico. Necesito desplazarme al elemento especificado, establecer el ancho + alto del control del navegador web similar a ese elemento ... y finalmente tomar una captura de pantalla de ese elemento. – SolidSnake