2016-11-13 2 views

답변

1

이 기능은 아직 DotNetBrowser DOM API에 없습니다. 그러나 Javascript를 사용하여이 문제를 해결할 수 있습니다.

업데이트 :이 기능은 DotNetBrowser 1.8.3에 추가되었습니다. 이제 obtain absolute or relative DOMElement position DOM API를 통해 가능합니다.

+0

,하지만 전체 화면으로 (픽셀을 incluing 해결). Internet Explorer에는 DotNetBrowser에 해당하는 DOM에 transforformation 서비스가 있습니다. var rect = el2.getBoundingClientRect(); var displayServices = el.document as IDisplayServices; var point = 새 tagPOINT {x = rect.left, y = rect.top}; displayServices.TransformPoint (참조 지점, _COORD_SYSTEM.COORD_SYSTEM_FRAME, _COORD_SYSTEM.COORD_SYSTEM_GLOBAL, el); – Paulo

0

창, 뷰포트 및 요소의 절대 좌표를 조합 할 수 있습니다. 는 코드 샘플 당신이 Screen.PrimaryScreen.Bounds 재산 여기

사용할 수있는 화면 해상도를 얻으려면 : 그것은 뷰포트의 상대 또는 절대 상대를 아는 것만으로는 충분하지 않습니다

public partial class Form1 : Form 
{ 
    BrowserView browserView; 

    public Form1() 
    { 
     InitializeComponent(); 
     browserView = new WinFormsBrowserView(); 

     browserView.Browser.FinishLoadingFrameEvent += Browser_FinishLoadingFrameEvent; 
     Controls.Add((Control)browserView); 
     browserView.Browser.LoadURL("google.com"); 
    } 

    private void Browser_FinishLoadingFrameEvent(object sender, DotNetBrowser.Events.FinishLoadingEventArgs e) 
    { 
     if (e.IsMainFrame) 
     { 
      DOMDocument document = e.Browser.GetDocument(); 
      DOMElement element = document.GetElementByName("btnK"); 
      Rectangle rectangle = element.BoundingClientRect; 

      Rectangle resolution = Screen.PrimaryScreen.Bounds; 
      Debug.WriteLine("Screen resolution = " + resolution.Width + 
       'x' + resolution.Height); 

      Debug.WriteLine("Form X = " + Location.X); 
      Debug.WriteLine("Form Y = " + Location.Y); 
      Debug.WriteLine("browserView X = " + ((Control)browserView).Location.X); 
      Debug.WriteLine("browserView Y = " + ((Control)browserView).Location.Y); 
      Debug.WriteLine("X = " + rectangle.Location.X); 
      Debug.WriteLine("Y = " + rectangle.Location.Y); 

      int absoluteX = Location.X + 
       ((Control)browserView).Location.X + rectangle.Location.X; 
      int absoluteY = Location.Y + 
       ((Control)browserView).Location.Y + rectangle.Location.Y; 

      Debug.WriteLine("Absolute X = " + absoluteX); 
      Debug.WriteLine("Absolute Y = " + absoluteY); 
     } 
    } 
} 
+0

스트레이트 (Strage),이 솔루션은 효과가있는 것처럼 보일 수 있지만 항상 그렇지는 않습니다. –