大家都知道windows phone前台使用sliverlight的xaml来进行布局,但是当我们要做一个软件的时候也许我们会随便拖几个控件放在界面上,,这样也不可以说不行,但是如果界面复杂,控件繁多,拖来拖去,受难为的还是自己;所以说一个好的界面布局不仅给自己一个清晰的界面,让用户看起来也是很舒服的感觉。

首先介绍在开发wp中常用的三种容器:Canvas、Grid、StackPanel当然三种容器中都可以放置任何控件,这三个容易本质上也是控件,所以控件中套控件,这种说法也是正确的。
1) Canvas:这是一个对空间进行绝对布局的容器,当容器翻转时,对应的里面的控件的位置是不会发生任何变化的,一般情况下,用的比较少,这里我就当做容器来介绍。可以自己动手试一下。记住翻转式要把SupportedOrientations="Portrait" 这个属性值设置成PortraitOrLandscape。只有设置成这个属性后,默认是不翻转的,位置在最上边,。
 
   <Canvas>
        <Button Canvas.Left="50" Canvas.Top="100" Content="123"></Button>
        <CheckBox Canvas.Left="50" Canvas.Top="300"></CheckBox>
    </Canvas>

 
2) Grid:这个是最常用的一种容器,当我们新建一个项目时,windows phone会自动给我们创建一个Grid。
我们可以把Grid想象成html中的table,应为Grid对应的也是行和列,只不过是虚拟的。
RowDefinitions对应的行,ColumnDefinition对应的列
具体用法:
 <Grid.RowDefinitions>
        <RowDefinition></RowDefinition>
        <RowDefinition></RowDefinition>
        <RowDefinition></RowDefinition>
</Grid.RowDefinitions>
 <Grid.ColumnDefinitions>
        <ColumnDefinition></ColumnDefinition>
        <ColumnDefinition></ColumnDefinition>
        <ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>

这样就创建了三行三列:当我们在Grid中放置元素的时候只需要制定对应的列和行就可以了
 
<Button Grid.Column="1">
<StackPanel Width="190">
<TextBlock Text="45"></TextBlock>
<TextBlock Text="收听" Width="199"></TextBlock>
</StackPanel>
</Button>
<Button Grid.Column="0" Grid.Row="1">
<StackPanel Width="190">
<TextBlock Text="26"></TextBlock>
<TextBlock Text="听众"></TextBlock>
</StackPanel>
</Button>
<Button Grid.Column="1" Grid.Row="1">
<StackPanel Width="190">
<TextBlock Text="0"></TextBlock>
<TextBlock Text="收藏"></TextBlock>
</StackPanel>
</Button>
3) StackPanel这种容器也是非常常见的一种,在这个控件中有个属性很重要就是Orientation,就是指示里面的子空间的显示方式是横向现实还是竖向现实,默认是横向的Horizontal;根据自己的需要设置

<StackPanel Orientation="Horizontal">
<Image Width="130" Height="130" Source="/wp练习;component/Images/Background.png"/>
<StackPanel Orientation="Vertical">
<TextBlock Margin="10" Text="window phone"></TextBlock>
<TextBlock Margin="10" Text="@weibowindowsphone7275"></TextBlock>
<TextBlock Margin="10" Text="男 海淀"></TextBlock>
</StackPanel>
</StackPanel>
也可以在StackPanel中嵌套StackPanel, 下面附上一个例子,仿照微博一个页面做的一个页面布局;

自己也可以随便找几个页面练练手。
在最后面的一个Demo有我自己找的一个微博的页面写的页面布局,大家也可以自己随便找几个页面练练手。
我们经常见到音乐播放器中的歌词(歌词从左到右的滚动效果), 一个textblock的渐变效果,textBox中背景放置图片,textBlock中字体背景放置图片。其实这并不难,只要知道有个Brush的东西,一切都变得简单了。
我们都知道要设置textBlock的字体需要设置Foreground颜色,但这种颜色是单一的,如果要设置渐变色或者RGP值的颜色(例如:#000);如果不容前台设置的话后台代码同样可以修改,但是前台能做的事,尽量交给前台做。Ellipse的控件的Fill,TextBox的BackGround的类型都是Brush,在Brush下有SolidBrush(渐变颜色设置),LinearGradientBrush(线性颜色设置)等的子类。通过这些属性给他们设置各种各样的效果
如果自己揉Reflector的话,搜索一下Brush,我们会看到
//textBlock的字体颜色的渐变效果
<TextBlock Text="王菲-因为爱情" FontSize="50">
               <TextBlock.Foreground>
                   <!--<SolidColorBrush Color="Red"></SolidColorBrush>-->
                   <LinearGradientBrush>
                        <GradientStop Offset="0" Color="Red"></GradientStop>
                        <GradientStop x:Name="g" Offset="0" Color="Blue"></GradientStop>
                        <GradientStop Offset="1" Color="Yellow"></GradientStop>
                   </LinearGradientBrush>
               </TextBlock.Foreground>
            </TextBlock>
 
//textBlock的字体颜色从左到右的滚动效果,歌词滚动
            <TextBlock HorizontalAlignment="Center" FontSize="30" Text="也许征程的迷茫会扯碎我的脚步" Margin="6,128,30,443">
                <TextBlock.Foreground>
                    <LinearGradientBrush>
                        <GradientStop Color="Red" Offset="0"></GradientStop>
                        <GradientStop x:Name="ge1" Color="Red" Offset="0"></GradientStop>
                        <GradientStop x:Name="ge2" Color="Yellow" Offset="0"></GradientStop>
                        <GradientStop Color="Yellow" Offset="1"></GradientStop>
                    </LinearGradientBrush>
                </TextBlock.Foreground>
            </TextBlock>
//给textBlock设置背景图片
            <TextBlock HorizontalAlignment="Center" FontSize="30" Text="可我相信未来会给我一双翅膀" Margin="36,240,30,312">
                <TextBlock.Foreground>
                    <ImageBrush ImageSource="Images/Background.png"></ImageBrush>
                </TextBlock.Foreground>
            </TextBlock>
// Ellipse 的fill加载图片
            <Ellipse Height="100" HorizontalAlignment="Left" Margin="120,351,0,0" Name="ellipse1" Stroke="Black" StrokeThickness="1" VerticalAlignment="Top" Width="200" >
                <Ellipse.Fill>
                    <ImageBrush ImageSource="Images/Background.png"></ImageBrush>
                </Ellipse.Fill>
            </Ellipse>
// 给TextBox设置背景图片
            <TextB
ox  Height="72" HorizontalAlignment="Left" Margin="20,479,0,0" Name="textBox1" Text="TextBox" VerticalAlignment="Top" Width="406" >
                <TextBox.Background>
                    <ImageBrush ImageSource="Images/Background.png"></ImageBrush>
                </TextBox.Background>
            </TextBox>

代码下载:布局/Brush使用.zip

转载于:https://www.cnblogs.com/sq62391/archive/2012/05/14/2500338.html

windows phone 前台布局以及画刷Brush使用相关推荐

  1. Windows程序设计--画笔和画刷

    画笔和画刷是重要的GDI对象,因为不管你画什么图形都需要画笔和画刷,虽然多数情况下是系统默认的. Windows提供的三种备用画笔(stock pen) 白色画笔:WHITE_PEN 黑色画笔:BLA ...

  2. windows编程之画刷

    windows编程之画刷 文章目录 windows编程之画刷 @[toc] 涉及到的函数 GetStockObject CreateSolidBrush CreateHatchBrush Create ...

  3. 画笔与画刷(pen and brush)

    Pen 画笔 在System.Drawing名称空间中 用来指定图形的轮廓,如颜色宽度等 画笔创建 Pen pen = new Pen(Color.Blue,5); 使用Pens类,直接用系统定义好的 ...

  4. 深入WPF中的图像画刷(ImageBrush)之1——ImageBrush使用举例

    深入WPF中的图像画刷(ImageBrush)之1--ImageBrush使用举例 2010年06月11日 星期五 15:20 昨天我在<简述WPF中的画刷(Brush) >中简要介绍了W ...

  5. QPainter 画笔(QPen)和画刷(QBrush)

    Qt中提供了强大的2D绘图系统,可以使用相同的API在屏幕上和绘图·设备上进行绘制,主要基于QPainter.QPainterDevice和QPainterEngine这3个类.QPainter执行绘 ...

  6. CSharp代码示例每日一讲: 在GDI+中使用画笔和画刷

    CSharp代码示例每日一讲,为刚刚学习编程的人准备,利用最简单的代码介绍CSharp编程知识! 画笔和画刷是图形应用中最常用的两种对象.笔用于绘制图形对象的轮廓,如线条和曲线;刷子是用来填充图形对象 ...

  7. MFC更换画笔(画刷)颜色以及画眼睛(GDI画图)

    MFC画眼睛 换画笔(画刷)颜色(参考链接:https://blog.csdn.net/sunxiving/article/details/51272001) 由于画笔一旦创建后就无法修改.所以要修改 ...

  8. Windows 8 应用商店应用开发 之 画刷

    8.5画刷 画刷用来对图形.文本和控件的内部或轮廓进行上色,经过上色可以让控件在界面中可见并能增加美观性.这一节重点介绍单色画刷(SolidColorBrush).线性渐变色画刷(LinearGrad ...

  9. c# 设置Brush 画刷 透明

    使用solidBrush新建画刷,定义画刷的颜色为透明色 Brush b = new SolidBrush(Color.FromArgb(50, Color.Green)); 这里的50是透明度的设置 ...

最新文章

  1. gridcontrol值为0时设置为空_XASSET 4.0入门指南
  2. 超级干货:你应该知道的那些编程原则!!
  3. crt中 新建的连接存储在哪_连接昌邑路和浦东大道,这条新建道路的规划设计方案公示中...
  4. 计算机配置界面在那,在哪里设置关机画面?设置为原来的经典界面?
  5. Redis 优势以及性能问题
  6. IOS学习笔记(五)——UI基础UIWindow、UIView
  7. 2018/11/22工作日志
  8. U盘拔出时总是提示有程序正在使用?
  9. 改变this指向的方法
  10. 【题解】【AcWing】1564. 哈希
  11. 互联网dmz区_服务器设置于DMZ区,DMZ区是什么意思?
  12. 我们为什么做不好软件项目?做项目时间都浪费在反复奸奸杀杀,杀杀奸奸上了
  13. Android xml 画上半圆 矩形,Android 半圆矩形的实现
  14. SQL的select 语句的执行顺序
  15. 【计算机网络】PPP协议
  16. 上传计算机桌面文件图标不见,关于桌面上图标都不见了这类问题的解决方法
  17. Python开发多媒体管理软件实现方法
  18. 天九共享:企业成功的重要元素是责任感
  19. Firebird嵌入版本的使用方法
  20. qiime安装(miniconda)

热门文章

  1. 区块链私链搭建及api调用
  2. 基于钻孔数据的三维地质模型可视化
  3. 元件引脚电气类型作用
  4. html预览dwg文件,如何使用纯javascript autodesk在查看器中脱机显示二维(.dwg)文件
  5. cv个人计算机SCI英文简历模板,CV 英文简历模板可打印.doc
  6. Android studio完整安装
  7. C++获取当前时间(北京时间)
  8. 计算机英语第三版 刘艺,计算机英语(第3版)复习刘艺 王春生课后习题.pdf
  9. 在Ubuntu中安装Android投屏软件scrcpy
  10. 超宽带(UWB)学习笔记——基于相位的测距方法