StackPanel 实现从上往下+从右往左 排列+RenderTransform特效实例分析

StackPanel:将子元素排列到可沿水平或垂直放置的行。

参考资料:

1. StackPanel类

2. Silverlight学习笔记(九)——RenderTransform特效【五种基本变换】及【矩阵变换MatrixTransform】

3. MatrixTransform矩阵变换

stack表明StackPanel跟栈一样,按顺序压入。StackPanel排列方向分为水平竖直,由Orientation设置,Horizontal(水平)或Vertical(竖直)。如下例所示:

<Grid>
     <StackPanel Height="326" HorizontalAlignment="Left" Margin="30,25,0,0"
                              Name="sp_1" VerticalAlignment="Top" Width="265"
                              Orientation="Horizontal"/>
     <StackPanel Height="326" HorizontalAlignment="Left" Margin="323,25,0,0" 
                              Name="sp_2" VerticalAlignment="Top" Width="265" 
                              Orientation="Vertical"/>
</Grid>



动态添加控件:
        private void init_sp_1()
        {
            for (int i = 0; i < 5; i++)
            {
                Button btn = new Button();
                btn.Background = Brushes.LightCyan;
                btn.Width = 20;
                btn.Height = (i+1) * 30;
                btn.Content = i.ToString();
                this.sp_1.Children.Add(btn);
            }
        }

        private void init_sp_2()
        {
            for (int i = 0; i < 5; i++)
            {
                Button btn = new Button();
                btn.Background = Brushes.LightCyan;
                btn.Width = (i + 1) * 30;
                btn.Height = 20;
                btn.Content = i.ToString();
                this.sp_2.Children.Add(btn);
            }
        }

运行效果:



但是实际开发过程中,我们通常需要从右往左,从下往上,那如何实现呢?

  • 从右往左,好办。只要把StackPanel的FlowDirection属性设置为RightToLeft即可!
  • 从下往上,分为前台后台:

前台如下设置:

<Button Content="4" Canvas.Left="125" Canvas.Top="417" Padding="12"
                    RenderTransformOrigin="0.5,0.5">
	<Button.RenderTransform>
      		<ScaleTransform ScaleX="-1"/>
        </Button.RenderTransform>
</Button>

要是动态添加控件的话,后台如下:

private void init_sp_2()
{
        for (int i = 0; i < 5; i++)
        {
                Button btn = new Button();
                btn.Background = 
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值