tutaj jest rozwiązanie mam tak daleko:
// ustaw wielkość naszej przeglądarce internetowej, aby mieć taki sam rozmiar jak obraz int szerokość, wysokość; width = webBrowser1.Document.Images [0] .ClientRectangle.Width; wysokość = 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);
teraz ten kod działa idealnie .. ale jest problem z obliczaniu przesunięć. Muszę obliczyć offsetparent elementu, a następnie obliczyć offsetproperties offsetparent itp. Muszę to zrobić dynamicznie, nie dodając go jeden po drugim. Nie wiem jak to zrobić. jakieś pomysły?
EDIT: tutaj jest moja ostatnia i ostateczna wersja i działa z każdym elemencie html znajdzie bezwzględne położenie każdego elementu chcę ..
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;
}
następnie użyć pozycji z:
//now scroll to that element
webBrowser1.Document.Window.ScrollTo(x, y);
zrobione!
co chcesz przez to osiągnąć? O wiele łatwiej będzie uzyskać odpowiedź, gdy prawdziwy problem się pojawi. – agradl
Chcę zrobić zrzut ekranu dla określonego elementu .. Muszę przewinąć do określonego elementu, a następnie ustawić szerokość + wysokość kontrolki przeglądarki podobnej do tego elementu .. i na koniec wziąć zrzut ekranu do tego elementu .. – SolidSnake