windows phone 学习(4)
1.Windows Phone8比Windows Phone7多了哪些:
支持C++(組件級的補充,主體還是C#);采用Windows 8 SDK;更多API;
2.普通的手機只能通過MarketPlace這個唯一的渠道下載安裝軟件,開發者帳戶機制,對于手機可以使用開發者帳戶去對手機解鎖(Developer Unlock)。花錢買:99$。開發者帳戶:被手機解鎖,可以上傳軟件到MarketPlace。
學生賬號:免費,edu郵箱,wpxap.com去求,去淘寶也能買。學生賬號只能部署3個程序,普通開發者帳戶是10個,滿了就刪舊的。
刷機完全越獄:沒有數量限制,不能上傳到Marketplace。每種手機刷機方法不一樣。小心謹慎。
3.“生成操作=Content,內容”是放到XAP壓縮包中的,“生成操作=Resource,資源”是放到dll中的。Content效率高。
XAML是編譯生成到dll的資源中的,然后允許時通過LoadComponent加載xaml文件。不像asp.net中aspx和cs那樣的繼承關系。
4.Silverlight中有Canvas、StackPanel、Grid三種基本布局容器,放在布局容器中的控件按照布局容器的特點進行布局。
5.Canvas就是根據坐標、大小進行絕對定位布局。
?<Canvas>
??????????? <Button Canvas.Left="28" Canvas.Top="26" Content="Button" Height="45" Width="92" />
??????????? <TextBox Canvas.Left="44" Canvas.Top="81" Height="23" Width="183" />
</Canvas>
Canvas.Top屬性指定控件左上角的縱坐標; Canvas.Left屬性指定控件左上角的橫坐標。
補充:代碼設置Top、Left等附加屬性的方法:Canvas.SetTop(控件名稱,值)。
StackPanel是把子控件橫向或者縱向排列,Orientation屬性設定排列方向:Horizontal(水平)、Vertical(縱向,默認值)
<StackPanel>
<TextBox Height="23" Width="120"/>
<TextBox Height="23" Width="120"/>
<TextBox Height="23" Width="120"/>
</StackPanel>
Grid
首先定義行數和列數,以及占的寬、高;Grid.Column、Grid.Row設定所在的行、列;Grid.ColumnSpan、Grid.RowSpan設定占據的行、列
無論哪種布局都可以通過Margin屬性(左上右下)修改元素之間的相對距離,類似于HTML;
Width、Height的可選值:Auto:自動;*剩余空間;0.3*:占據30%空間。
6.如何通過代碼動態添加控件:sp1.Children.Add(tb);
以及動態定位控件TextBox tb1 = (TextBox)FindName("動態txt1");
7.Silverlight的界面都是使用畫刷(Brush)畫出來的,可以改變不同的畫刷畫不同的內容:
SolidColorBrush:實心顏色畫刷
LinearGradientBrush:漸變畫刷
RadialGradientBrush:徑向漸變畫刷(以圓心散射)
ImageBrush:圖片畫刷
Brush類型的屬性都可以指定各種Brush,比如Button的Foreground屬性、Rectangle(矩形圖形)的Fill屬性。
??????? <Rectangle>
??????????? <Rectangle.Fill>
??????????????? <SolidColorBrush>Red</SolidColorBrush>
??????????? </Rectangle.Fill>
??????? </Rectangle>
??
<TextBlock Text="World" FontSize="56">
??<TextBlock.Foreground>
???<!--漸變畫刷-->
??<LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5">
???<GradientStop Color="Blue" Offset="0"></GradientStop>
???? <GradientStop Color="Yellow" Offset="0.5"></GradientStop>
???? <GradientStop Color="Red" Offset="1"></GradientStop>
??</LinearGradientBrush>
??</TextBlock.Foreground>
</TextBlock>
線性漸變中有“漸變點”的概念,也就是在漸變的路線中設置漸變點(GradientStop)的顏色(Color),由于可以設定多個漸變點,因此需要設定漸變點的偏移量(Offset,最大為1,最小為0)
LinearGradientBrush默認是從左上角(0,0)漸變到右下角(1,1),可以通過StartPoint、EndPoint屬性設置漸變的起止點:<LinearGradientBrush StartPoint=“0.5,0" EndPoint=“0.5,1" >
Name和x:Name的區別:所有的可視控件都繼承自FrameworkElement, FrameworkElement類中定義類Name屬性。繼承自FrameworkElement的類即可以使用Name也可以使用x:Name,但是不是FrameworkElement子類只能使用x:Name。
<TextBlock Text="World" FontSize="56">
??????????????? <TextBlock.Foreground>
??????????????????? <!--徑向漸變畫刷(以圓心散射)-->
????????????????? <RadialGradientBrush>
?????????????????????? <GradientStop Color="Blue" Offset="0"></GradientStop>
????????????????????? <GradientStop Color="Yellow" Offset="0.5"></GradientStop>
????????????????????? <GradientStop Color="Red" Offset="1"></GradientStop>
????????????????? </RadialGradientBrush>
??????????????? </TextBlock.Foreground>
</TextBlock>
<!--圖片畫刷,Stretch圖片排列方式-->
??????????? <TextBlock Text="圖片畫刷" FontSize="56">
??????????????? <TextBlock.Foreground>
??????????????????? <ImageBrush ImageSource="Koala.jpg" Stretch="UniformToFill"></ImageBrush>
??????????????? </TextBlock.Foreground>
??????????? </TextBlock>
???
RotateTransform:旋轉變換。
ScaleTransform:縮放變換。
SkewTransform:傾斜變換。
TranslateTransform:平移變換。
?<Image.RenderTransform>
??????????????? <RotateTransform CenterX="40" CenterY="40" Angle="-30"></RotateTransform>
</Image.RenderTransform>
CenterX、CenterY為最大值為像素,Angle為旋轉角度,順時針為正,逆時針為負。
ScaleTransform為元素縮放
??????????? <Image.RenderTransform>
??????????????? <ScaleTransform CenterX=“40” CenterY=“40” ScaleX=“2” ScaleY=“0.5”></ScaleTransform> ScaleX、 ScaleY為縮放的倍數。
??????????? </Image.RenderTransform>
如果ScaleX、 ScaleY設置為負值,則可以實現翻轉的效果。案例:帶倒影的視頻播放器。圖片放大、縮小
3)傾斜變換
??????????? <Image.RenderTransform>
??????????????? <SkewTransform AngleX="30" AngleY="10"></SkewTransform>
??????????? </Image.RenderTransform>
4)平移變換
??????????? <Image.RenderTransform>
??????????????? <TranslateTransform X="30" Y="50"></TranslateTransform>
??????????? </Image.RenderTransform>
??????????? X、Y表示平移的變化量。因為不推薦使用Canvas布局,所以如果動態控制元素位置、大小一般使用ScaleTransform 、 TranslateTransform ,不推薦修改元素的Height、Width和坐標。
Silverlight推薦用Tap(點擊)、DoubleTap(雙擊)、Hold(長按)
8.用戶控件實現等待控件:繼承UserControl,使用的時候先在頭部引用所在的命名控件和程序集,并且給一個別名
xmlns:ctrls="clr-namespace:PhoneApp1.Ctrls",然后就可以<ctrls:WaitingControl x:Name="wc1"></ctrls:WaitingControl>使用了
自定義控件:繼承自現有的控件,給控件加更多功能。
用戶控件是組合現有控件,自定義控件是繼承現有控件增加更多功能
投射不是變換
??????????? <Image.Projection>
??????????????? <PlaneProjection RotationX="20"></PlaneProjection>
??????????? </Image.Projection>
9樣式:頁面樣式
<phone:PhoneApplicationPage.Resources>
??????? <Style TargetType="TextBlock" x:Name="tb4">
??????????? <Setter? Property="Foreground" Value="Red"></Setter>
??????? </Style>
??????? <Style TargetType="TextBlock" x:Name="tb1">
??????????? <Setter? Property="Foreground" Value="Blue"></Setter>
??????? </Style>
??????? <Style TargetType="TextBlock" x:Name="tb2" BasedOn="{StaticResource tb1}">
??????????? <Setter? Property="FontSize" Value="48"></Setter>
??????? </Style>
????
??? </phone:PhoneApplicationPage.Resources>
全局樣式
? <Application.Resources>
??????? <Style TargetType="TextBlock" x:Key="tbGreen">
??????????? <Setter Property="Foreground" Value="Green"></Setter>
??????? </Style>
??? </Application.Resources>
10.換膚功能
不同樣式的資源字典,這些文件都設定為“Resource”
頁面中不要在xaml中引入資源字典!,否則會覆蓋全局
?private static void ApplySkin(ResourceDictionary newStyle)
??????? {
???????? App.Current.Resources.MergedDictionaries.Clear();
App.Current.Resources.MergedDictionaries.Add(newStyle);
??????? }
應用不同的樣式
ResourceDictionary newStyle = new ResourceDictionary();
??????????? newStyle.Source = new Uri("/PhoneApp1;component/樣式換膚/SkinFire.xaml", UriKind.RelativeOrAbsolute);
??????????? ApplySkin(newStyle);
將樣式加載到全局中
11.資源文件
可以把任意元素聲明到Resources,相當于new一個對象,可以通過名字引用,在xaml中通過Key引用
xmlns:system="clr-namespace:System;assembly=mscorlib"
<phone:PhoneApplicationPage.Resources>
??????? <SolidColorBrush Color="Red" x:Key="scb"></SolidColorBrush>
??????? <system:String x:Key="str">3</system:String>
??? </phone:PhoneApplicationPage.Resources>
???? <Button Foreground="{StaticResource scb}" Content="aa"></Button>
??????????????? <Button Content="{StaticResource str}"></Button>
讀取資源文件中的元素:string msg = (string)App.Current.Resources["key"];
總結
以上是生活随笔為你收集整理的windows phone 学习(4)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ser,ver
- 下一篇: SQL Server 性能优化之——系统