• 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"];

  • 相关阅读:
    NanUI文档
    NanUI文档
    NanUI文档
    开源组件NanUI一周年
    NanUI文档
    NanUI 0.4.4发布
    【开源】做了一个WinForm窗体的投影组件,能够为窗口添加影子效果
    NanUI for Winform 使用示例【第二集】——做一个所见即所得的Markdown编辑器
    NanUI for Winform 使用示例【第一集】——山寨个代码编辑器
    非常简洁简单的tcp socket库 XKSocket
  • 原文地址:https://www.cnblogs.com/yxlblogs/p/3127836.html
Copyright © 2020-2023  润新知