WPF教程五:布局之Canvas面板


Canvas:畫布面板

      畫布,用於完全控制每個元素的精確位置。他是布局控件中最為簡單的一種,直接將元素放到指定位置,主要來布置圖面。使用Canvas,必須指定一個子元素的位置(相對於畫布),否則所有元素都將出現在畫布的左上角。調整位置用Left、Right、Top和Bottom四個附加屬性。如果Canvas是窗口主元素(即最外層的布局面板是Canvas),用戶改變窗口大小時,Canvas也會隨之變化,子元素的位置也會隨之移動,以保證相對於Canvas的位置屬性不變。
     Canvas允許子元素的部分或全部超過其邊界,默認不會裁剪子元素,同時可以使用負坐標,即溢出的內容會顯示在Canvas外面,這是因為默認 ClipToBounds=”False”,因此畫布不需要指定大小。如果想復制畫布內容,將ClipToBounds設為true即可。

1、子元素不超出邊界

使用XAML代碼實現:

 1 <Window x:Class="WpfDemo.MainWindow"
 2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 4         Title="Canvas面板" Height="237" Width="525" WindowStartupLocation="CenterScreen">
 5     <Canvas>
 6         <TextBox Width="100" BorderBrush="Blue"></TextBox>
 7         <TextBox Canvas.Left="200" Canvas.Top="50" Width="100" BorderBrush="Green"></TextBox>
 8         <Button Height="20" Canvas.Right="10" Canvas.Bottom="10" Content="按鈕"></Button>
 9     </Canvas>
10 </Window>

2、子元素超出邊界

使用XAML代碼實現:

 1 <Window x:Class="WpfDemo.MainWindow"
 2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 4         Title="Canvas面板" Height="237" Width="525" WindowStartupLocation="CenterScreen">
 5     <Canvas>
 6         <TextBox Width="100" BorderBrush="Blue"></TextBox>
 7         <TextBox Canvas.Left="200" Canvas.Top="50" Width="100" BorderBrush="Green"></TextBox>
 8         <Button Height="200" Canvas.Right="10" Canvas.Bottom="-130" Content="按鈕"></Button>
 9     </Canvas>
10 </Window>

在XAML設計界面,超出的部分不會進行裁剪,如圖所示:

如果將ClipToBounds屬性設為true,在設計界面將會對子元素的超出部分進行裁剪:

注意:要說明一點Canvas內的子控件不能使用兩個以上的Canvas附加屬性,如果同時設置Canvas.Left和Canvas.Right屬性,那么后者將會被忽略。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM