누구나 DotNetBrowser를 사용하여 특정 요소의 절대 좌표를 얻는 방법을 알고 계십니까?DotNetBrowser에서 특정 요소의 절대 좌표를 얻는 방법은 무엇입니까?
감사합니다.
누구나 DotNetBrowser를 사용하여 특정 요소의 절대 좌표를 얻는 방법을 알고 계십니까?DotNetBrowser에서 특정 요소의 절대 좌표를 얻는 방법은 무엇입니까?
감사합니다.
이 기능은 아직 DotNetBrowser DOM API에 없습니다. 그러나 Javascript를 사용하여이 문제를 해결할 수 있습니다.
업데이트 :이 기능은 DotNetBrowser 1.8.3에 추가되었습니다. 이제 obtain absolute or relative DOMElement position DOM API를 통해 가능합니다.
창, 뷰포트 및 요소의 절대 좌표를 조합 할 수 있습니다. 는 코드 샘플 당신이 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);
}
}
}
스트레이트 (Strage),이 솔루션은 효과가있는 것처럼 보일 수 있지만 항상 그렇지는 않습니다. –
,하지만 전체 화면으로 (픽셀을 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