Ecco la soluzione ho ottenuto finora:
// impostare la dimensione del nostro browser web per essere la stessa dimensione come la larghezza int immagine , altezza; 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);
ora questo codice funziona perfettamente .. ma c'è un problema con il calcolo delle compensazioni. Ho bisogno di calcolare l'offset dell'elemento, quindi calcolare l'offset del componente offset, ecc. Devo farlo dinamicamente senza aggiungerlo uno alla volta. Non so come farlo. qualche idea?
EDIT: ecco la mia ultima e definitiva versione e funziona con qualsiasi elemento HTML troverà la posizione assoluta di qualsiasi elemento che voglio ..
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;
}
quindi utilizzare la posizione con:
//now scroll to that element
webBrowser1.Document.Window.ScrollTo(x, y);
terminato!
cosa stai cercando di realizzare? Sarà molto più facile fornire una risposta una volta che il problema reale emergerà. – agradl
voglio prendere screenshot per elemento specifico .. Ho bisogno di scorrere fino all'elemento specificato quindi impostare la larghezza + altezza del controllo webbrowser simile a quell'elemento .. e infine prendere screenshot per quell'elemento .. – SolidSnake