日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]為什么叫室內(nèi)裝修呢?呵呵,其實(shí)說的是布局,具體些嘛,就是在一個(gè)頁面中,你如何去擺放你的控件,如何管理它們,你說,像不像我們剛搬進(jìn)新住所,要 “裝修”一

為什么叫室內(nèi)裝修呢?呵呵,其實(shí)說的是布局,具體些嘛,就是在一個(gè)頁面中,你如何去擺放你的控件,如何管理它們,你說,像不像我們剛搬進(jìn)新住所,要 “裝修”一番?買一套什么樣的茶幾和杯具(我說的“杯具”指的是原意,不要理解錯(cuò)了),或者沙發(fā)什么的,該怎么放,擺在哪里好看,其實(shí),我們做界面設(shè)計(jì)也是差不多這個(gè)道理。

相信我們下過象棋就知道,棋盤上有橫向的,縱向的很多網(wǎng)格線,而棋子就是參照這些網(wǎng)格線來放置的,對(duì),在WP頁面布局中我們把這樣的布局稱為網(wǎng)格布局,對(duì)應(yīng)的控件為Grid。

千萬別小看這個(gè)Grid控件,它可是非常好用的,而且也比較靈活,對(duì)的,當(dāng)我們創(chuàng)建一個(gè)新頁面時(shí),VS為我們生生的XAML中,正是使用了Grid控件進(jìn)行布局的。

既然是網(wǎng)格了,肯定會(huì)有行和列的,而我們的控件就是按需要放到由這些行和列共同產(chǎn)生的單元格中,就是我們?cè)谧鼍W(wǎng)頁排版時(shí)用到的table標(biāo)簽,應(yīng)該說是非常類似的。

下面我們一起動(dòng)手做個(gè)小練習(xí),通過這個(gè)練習(xí),我們可以從一種更直觀的角度去了解Grid控件的用法。

1、啟動(dòng)VS,新建一個(gè)WP應(yīng)用程序,不用我多說了,都會(huì)了。

2、刪除頁面中的根Grid,整個(gè)刪除。如下圖所示。

 

3、然后,替換為以下XAML代碼。

[html] 
  1. <Grid x:Name="Root">  
  2.     <Grid.ColumnDefinitions>  
  3.         <ColumnDefinition Width="*"/>  
  4.         <ColumnDefinition Width="*"/>  
  5.     </Grid.ColumnDefinitions>  
  6.     <Grid.RowDefinitions>  
  7.         <RowDefinition Height="*"/>  
  8.         <RowDefinition Height="*"/>  
  9.     </Grid.RowDefinitions>  
  10. </Grid>  

 

這樣我們就定義了一個(gè)兩行兩列的網(wǎng)格布局,也就是整個(gè)頁面被劃分為4個(gè)方塊。
先簡(jiǎn)單說一下行的高,列的寬的表示方法,如果你用過WPF,你應(yīng)該很清楚了。
(1)可以用數(shù)值,double類型,如120.667,這個(gè)數(shù)字與屏幕分辨率無關(guān),運(yùn)行運(yùn)行庫會(huì)自行調(diào)整;

(2)*:這個(gè)星號(hào)是什么意思呢?就像上面的例子,我都用了*,這么說是說不清楚的,我舉個(gè)例子吧。
比如,我把一個(gè)網(wǎng)格分為3行,而每一行的高度都是*,則表示三個(gè)行的高度是平均分配的,都占整個(gè)網(wǎng)格高度的1/3.
如果我第一行的高為2*,第二行的高為*,第三行的高為3*,那么又該如何分配呢?
先別急,把上面的代碼改一下,我們就可以直觀地看到效果了。為了方便觀察,我把ShowGridLines的值改為True,這樣網(wǎng)格線就會(huì)顯示。

[html] 
  1. <Grid x:Name="Root" ShowGridLines="True">  
  2.     <Grid.RowDefinitions>  
  3.         <RowDefinition Height="2*"/>  
  4.         <RowDefinition Height="*"/>  
  5.         <RowDefinition Height="3*"/>  
  6.     </Grid.RowDefinitions>  
  7. </Grid>  

好,現(xiàn)在我們看看設(shè)計(jì)視圖上面顯示的結(jié)果。

其實(shí)上面三行的高分別為2*,1*和3*,1可以省略,它的意思就是把整個(gè)網(wǎng)格的高度平均分成2 + 1 + 3 = 6份,而2*就占其中2份,1*就占其中1份,3*就占其中3份,也就是說,它們分別占總高度的2/6,1/6,3/6.
怎么樣,找到規(guī)律了嗎?
再來一例。

[html]
  1. <Grid x:Name="Root" ShowGridLines="True">  
  2.     <Grid.RowDefinitions>  
  3.         <RowDefinition Height="3*"/>  
  4.         <RowDefinition Height="7*"/>  
  5.     </Grid.RowDefinitions>  
  6. </Grid>  

這時(shí)候,我們?cè)倏纯丛O(shè)計(jì)視圖有啥變化?

 

上面的示例是把整個(gè)容器的高度平均分為 3 + 7 = 10 份,而第一行的高度占總高度的3/10,第二行的高度占總高度的7/10.
現(xiàn)在明白了一些了沒?
再看看下面的例子:

[html]
  1. <Grid x:Name="Root" ShowGridLines="True">  
  2.     <Grid.RowDefinitions>  
  3.         <RowDefinition Height="86"/>  
  4.         <RowDefinition Height="5*"/>  
  5.         <RowDefinition Height="3*"/>  
  6.     </Grid.RowDefinitions>  
  7. </Grid>  

同理,第一行固定86,這是一個(gè)絕對(duì)的值,然后呢,把剩下的高度,就是除了86之外的,平均分為 5 + 3 = 8 份,第二行占了剩下的高度的5/8,第三行占了剩下的高度的3/8.

(3)Auto,不用多解釋,從單詞的含義就知道了,就是根內(nèi)容自動(dòng)調(diào)整。

列的定義與行是相類似的,只不過列定義寬度,行定義高度而已。
如果以上三種值同時(shí)出現(xiàn)呢?原理是一樣的,自己思考一下吧,不懂的就多寫代碼觀察。

那么,我們?nèi)绾伟褍?nèi)容放到對(duì)應(yīng)的單元格內(nèi)呢?Grid的行序號(hào)和列序號(hào)是從0開始的,如第一列就是0,第二行就是1等,具體怎么操作呢?
在聲明其內(nèi)容時(shí),通過附加屬性來確定內(nèi)容應(yīng)放在哪個(gè)單元格,如下面例子。

[html]
  1. <Grid x:Name="Root" ShowGridLines="True">  
  2.     <Grid.RowDefinitions>  
  3.         <RowDefinition Height="*"/>  
  4.         <RowDefinition Height="*"/>  
  5.     </Grid.RowDefinitions>  
  6.     <Grid.ColumnDefinitions>  
  7.         <ColumnDefinition Width="*"/>  
  8.         <ColumnDefinition Width="*"/>  
  9.     </Grid.ColumnDefinitions>  
  10.     <!-- 內(nèi)容 -->  
  11.     <TextBlock Grid.Column="0" Grid.Row="0" Text="第1行第1列" FontSize="35"/>  
  12.     <Rectangle Fill="Yellow" Grid.Column="1" Grid.Row="0" Margin="68"/>  
  13.     <Button Grid.Column="0" Grid.Row="1" Content="第2行第1列" FontSize="32"/>  
  14.     <Ellipse Fill="Blue" Height="95" Width="180" Grid.Column="1" Grid.Row="1"/>  
  15. </Grid>  

運(yùn)行效果如下:

 

 

好了,網(wǎng)格布局就吹到這里,下面接著看另一個(gè)較簡(jiǎn)單的布局——StackPanel,嗯,它是一個(gè)面板,它的子內(nèi)容的布局非常簡(jiǎn)單,就兩種方式:橫向和縱向,它是沿直線分布的,要么水平,要么垂直,反正是線性分布,就類似于我們說的數(shù)據(jù)結(jié)構(gòu)中的棧隊(duì)列,先進(jìn)后出。
例一,水平布局。

[html]
  1. <StackPanel Orientation="Horizontal" Height="100">  
  2.     <Button Content="按鈕1"/>  
  3.     <Button Content="按鈕2"/>  
  4.     <Button Content="按鈕3"/>  
  5. </StackPanel>  

效果如下:

 

例二:垂直布局。

[html]
  1. <StackPanel Orientation="Vertical" Width="300">  
  2.     <TextBlock Text="文本一" FontSize="80"/>  
  3.     <TextBlock Text="文本二" FontSize="80"/>  
  4.     <TextBlock Text="文本三" FontSize="80"/>  
  5. </StackPanel>  


運(yùn)行效果如下:
(圖6)運(yùn)行效果如下:

 

最后,我們來看看還有一種通過絕對(duì)定位的布局控件——Canvas。
它就像我們的二維坐標(biāo)系,但與我們?cè)谄矫鎺缀沃胁煌氖?,Canvas的原點(diǎn)在左上角,相信寫過可視化程序的朋友都知道了。
要注意的是,Canvas不知道具體要為哪些子內(nèi)容設(shè)置坐標(biāo),所以,它的Top和Left值視具體情況而定,因此這兩個(gè)屬性都是附加屬性,也就是它附加在放置在Canvas中的子元素要設(shè)置的具本位置而使用,所以每個(gè)子元素的定位都通過附加的Canvas.Top和Canvas.Left來設(shè)置。

[html]
  1. <Canvas>  
  2.     <Rectangle Fill="Orange" Canvas.Left="37" Canvas.Top="116" Height="165" Width="220" />  
  3.     <Path Data="M0,0 L0,8 L12,8 Z" Fill="Silver"  
  4.           Canvas.Left="127"  
  5.           Canvas.Top="204"  
  6.           Width="260"  
  7.           Height="235" Stretch="Fill"/>  
  8. </Canvas>  


 

還有的是,ZIndex是用于設(shè)置子元素的順序,從0開始,默認(rèn)為0,值越大,它越在頂層,比如上面的例子,我們發(fā)現(xiàn),后面添加的三角形把前一個(gè)矩形擋住了,那如何讓矩形在其它圖形之上呢?對(duì),把ZIndex設(shè)置一個(gè)較大的值就行了,如:

[html]
  1. <Canvas>  
  2.     <Rectangle Fill="Orange" Canvas.Left="37" Canvas.Top="116"  
  3.                Height="165" Width="220"  
  4.                Canvas.ZIndex="1"/>  
  5.     <Path Data="M0,0 L0,8 L12,8 Z" Fill="Silver"  
  6.           Canvas.Left="127"  
  7.           Canvas.Top="204"  
  8.           Width="260"  
  9.           Height="235" Stretch="Fill"/>  
  10. </Canvas>  


 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉