打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
课件设计中窗口最大化问题一例

课件设计中窗口最大化问题一例

(2011-11-02 20:38:48)
标签:

杂谈

    项目设计时界面窗口尺寸是固定的,运行时可能涉及到窗口尺寸的变化,如最大化,还原、拖动调整窗口尺寸等,这时窗口中的元素尺寸能跟随变化吗?Blend中有1个布局控件Grid(Window中的根布局LayoutRoot就是这个控件),可以设置网格分割线,将界面中元素划分区域布置,设置好界面中元素的相关属性,就能实现元素尺寸和窗口尺寸的跟随变化。T1-015是一个实例。

T1-015 利用Grid网格分割线的界面布局

   T1-015中的上方是1个TextBlock(textblock1,显示“WPF和Silverlight项目设计实例”),中间左侧是1个Rectangle控件,其右侧是1个TextBlock(tb1),其中显示了一段文字,但该文本框已经被转换为路径Path,实际上已经是Path控件。右边有1个媒体播放控件MediaElement(me),在“公共属性”栏中设置LoadedBehavior为“Manual”,Source中的视频文件从项目添加的文件夹“sucai”中选择。其下方有4个按钮(b1-b4),用于控制视频播放。T1-015下方左侧是1个小球做自由落体运动的模拟动画,使用PathListBox实现(详见“设计基础”4.4节),动画模拟使用了缓动曲线。中间是RichTextBox(ritchtextbox)控件,其中放置了文字和图片,下方右侧是Image控件,显示1幅图片。

   设计时可以根据上面说到的放入元素首先设置Grid控件的网格分割线(“设计基础”3.7节),窗口的根布局“LayoutRoot”默认布局控件是Grid,在【对象和时间线】面板选中“LayoutRoot”,鼠标移到Grid控件边缘可以点击鼠标设置分割线,选中分割线用鼠标可以移动,也可以按“Del”键删除。分割线设置完成后可以将上面提到的控件放入,也可以放入后再设置分割线。

   为了使窗口中放置的元素尺寸能够随窗口的尺寸变化而变化,关键是控件对象的Width和Height要设置为“自动”,否则不会更随变化,如T1-015a所示。


   当在Grid布局控件中设置分割线后,在向分割区域放入控件时一般Width和Height会自动设为“自动”,如果编辑Width或Height,如输入数值,可能丢失“自动”设置,但只要点击T1-015中Width和Height参数框右侧的“星”状图标,就会设为“自动”方式。

   T1-015中4个按钮的Width和Height是固定大小,而不是自动方式,所以它们的大小不会随窗口尺寸变化。但是当文本框的Width和Height跟随变化的时候,其中的文字大小不会跟随变化,为了解决这个问题实例使用了2种办法,1个是转化为Path控件,将其Width和Height设为“自动”方式,但是一旦转换为Path控件,就不能对文本再编辑了,这是不方便的。另1个是编写程序,下面是程序代码。

    //定义变量记忆窗口宽和文本框的字体

    double windowW,fontsize1,fontsize2;

    public MainWindow()

        {

             this.InitializeComponent();

             //当前窗口的初始宽度

              windowW=this.Width;

             //记忆文本框字体初始大小

             fontsize1=this.textblock1.FontSize;

             fontsize2=this.ritchtextbox.FontSize;

             //视频播放

             this.me.Play();

        }

        //窗口尺寸变化时发生的事件

        private void Window_SizeChanged(object sender,System.Windows.SizeChangedEventArgs e)

        {

             //窗口变化后的尺寸和初始尺寸的比

             double a=this.ActualWidth/windowW;

             //文本框字体大小同比例变化

             this.textblock1.FontSize=fontsize1*a;

             this.ritchtextbox.FontSize=fontsize2*a;

        }

        //视频暂停

        private void b2_Click(object sender, System.Windows.RoutedEventArgse)

        {

             this.me.Pause();

        }

        //视频继续播放

        private void b3_Click(object sender, System.Windows.RoutedEventArgse)

        {

             this.me.Play();

        }

        //视频停止播放

        private void b4_Click(object sender, System.Windows.RoutedEventArgse)

        {

             this.me.Stop();

        }

        //视频重新启动播放

        private void b1_Click(object sender, System.Windows.RoutedEventArgse)

        {

             this.me.Stop();

             this.me.Play();

        }

   需要补充说明的是界面窗口设计时Width和Height设置的是固定尺寸800×600,而不是自动,否则记录当前窗口初始尺寸的语句就会出问题。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
一步一步学Silverlight 2系列(3):界面布局
Expression Blend实例中文教程(3)
WPF之DataTemplate的使用
RadioButton
走进WPF之MVVM完整案例
WPF中的控件布局
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服