如下面的xaml代碼:
??
< Window x:Class = " WindowsApplication5.Window1 "
xmlns = " http://schemas.microsoft.com/winfx/2006/xaml/presentation "
xmlns:x = " http://schemas.microsoft.com/winfx/2006/xaml "
Title = " WindowsApplication5 " Height = " 300 " Width = " 300 " WindowStartupLocation = " CenterScreen "
>
< Grid >
< Canvas Name = " canvas " >
< Button Name = " btnClick " Width = " 30 " Height = " 20 " Canvas.Left = " 50 " Canvas.Top = " 50 " VerticalAlignment = " Center " HorizontalAlignment = " Center " > click me </ Button >
</ Canvas >
</ Grid >
</ Window >
在Canvas上面有一個Button,btnClick相對于canvas的位置是50和50,該窗體最后運行出來相對于屏幕的
位置如下圖所示:
?
UIElement.PointFromScreen(Point):參數是屏幕Screen中的一個坐標點,這個函數的作用是把Screen中的一個點的坐標轉換成該窗體Window中的坐標,參照點是UIElement的位置(當作(0,0)),所以:
btnClick.PointFromScreen( new Point (0, 0));?值為
(-416,-292)? -- screen的(0,0)相對于btnClick的topleft(當作(0,0))的坐標。
btnClick.PointFromScreen( new Point (50, 50));
值為 ? (-366,-242) -- screen的(50,50)相對于btnClick的topleft(當作(0,0))的坐標。
canvas.PointFromScreen( new Point (0, 0));
值為 (-366,-242) -- screen的(0,0)相對于canvas的topleft(當作(0,0))的坐標。
Canvas .GetLeft(btnClick); 值為50
Canvas .GetTop(btnClick);? 值為50
UIElement.PointToScreen(Point):參數是窗體Window中的一個坐標,參照點是相對于UIElement(位置當作(0,0)),偏移量為Point的一個點,返回該點在Screen中的坐標:
btnClick.PointToScreen( new Point (50,50)); // (466,342)
canvas.PointToScreen( new Point (50,50)); // (416,292)
注意屏幕的左上角的坐標是(0,0)。
另外學習
e.GetPosition(UIElement)的用法,也可以用Mouse.GetPosition(UIElement)達到相同的效果。
通常e是一個鼠標單擊事件的EventArgs,例如:
btnClick.PreviewMouseLeftButtonDown += new MouseButtonEventHandler
(btnClick_PreviewMouseLeftButtonDown);
void btnClick_PreviewMouseLeftButtonDown( object sender, MouseButtonEventArgs e)
{
Point p1 = e.GetPosition(sender as Button );
Point p2 = e.GetPosition(canvas);
}
如果我單擊btnClick上很靠近左上角的一個地方,假設該點相對于btnClick左上角的坐標是(2,2),
那么p1的值是(2,2),p2(52,52)。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
