09 2013 档案

摘要:虽然在WPF中可以使用TranslateTransform、RotateTransform、ScaleTransform等进行几何变换,但我们也可以使用更底层的MatrixTransform(矩阵变换)来进行更复杂的复合变换。 首先我们矩阵如何影响几何变换的: 1,缩放操作 观察下面的矩阵乘法 如果我们用[2 5]代表点(2,5),我们发现其乘以一个矩阵后变成了[4,5],与之对应的点是(4,5),这相当与其X坐标变成了原来的两倍。 同理: 经过矩阵乘法后点(2,5)的Y坐标变成了原来的两倍(2,10)。 我们可以总结出这样的结论: 可以将矩阵的第二和第三个元素设置为0并... 阅读全文
posted @ 2013-09-30 09:52 龙腾飞 阅读(738) 评论(0) 推荐(0)
摘要:这两天用WPF做一个项目的UI部分时, 发现跨线程地访问了UI控件, 自然地报异常了. 当时找了半天也没在控件中找到InvokeRequired属性和Invoke方法, 郁闷之极.....最后发现在.net3.0中,这有所改变了.替代InvokeRequired的方法是DispatcherObject.CheckAccess()或DispatcherObject.VerifyAccess()方法,用于指示当前线程是否可以直接访问控件.替代Invoke的方法是DispatcherObject.Dispatcher.BeginInvoke(...)方法参考代码:// Uses the Dispat 阅读全文
posted @ 2013-09-23 12:09 龙腾飞 阅读(288) 评论(0) 推荐(1)
摘要:谈到多线程,很多人对其可能都不太有好感,觉得麻烦与易出错。所以我们不排除有这样的情况:假设我对“多线程”、“异步”这些字眼潜意识地有些反感,所以在编码过程中能不用就不用,觉得延迟几百毫秒还是可以忍受的,如果系统中这种“可以忍受”的地方很多,最后我们会发现系统的性能变得一团糟,界面总是在“卡”(阻塞)。这里我们讨论一下WPF的多线程模型,以便利用它使我们的UI线程得到解脱。1,UI线程传说WPF应用程序都至少有两个线程,一个用于UI绘制,其隐藏于后台,另一个用于管理UI,包括用响应用户输入执行后台代码等。MSDN上对这两个线程是这样描述的:“Typically, WPF applications 阅读全文
posted @ 2013-09-23 12:08 龙腾飞 阅读(467) 评论(0) 推荐(2)
摘要:简介但凡涉及到图形界面,往往的设计都是不支持或者不推荐使用多个线程操作界面内容.而且通常会有一个专门的线程调度器来处理任务线程和界面线程的问题.下面提供两个两个方案.使用Dispatcher.BeginInvoke这个方法简单暴力适合小工作量的修改一些界面内容.使用Dispatcher.BeginInvoke()会将代码安排为调度程序的一个任务.步骤使用Thread新建并开始一个线程在新建的线程处理函数中需要修改界面的时候获取界面的dispatcher使用Dispatcher的BeginInvoke方法指定一个线程优先级,和一个委托,这个委托时用于修改界面内容的下面给出一部分代码//新建线程T 阅读全文
posted @ 2013-09-23 12:06 龙腾飞 阅读(3509) 评论(0) 推荐(2)
摘要:WPF(Windows Presentation Foundation)应用程序在没有图形加速设备的机器上运行速度很慢是个公开的秘密,给用户的感觉是它太吃资源了,WPF程序的性能和硬件确实有很大的关系,越高档的机器性能越有优势。 程序性能改善不是一蹴而就的,好的设计可以消除影响性能的问题,例如,在运行时构造对象就会对程序的性能造成影响。虽然WPF通过增强的导航等功能提供了更丰富的用户界面,但你应该考虑你的用户是否的确需要富图形界面,尽管WPF有这样那样的问题,但在UI设计,特别是自定义风格和控件模板方面,的确给开发人员提供了不少灵活性。 图 1 WPF架构,蓝色是Windows组件,褐... 阅读全文
posted @ 2013-09-18 11:46 龙腾飞 阅读(635) 评论(0) 推荐(0)