自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 使用em

在如今这个提倡可用性设计以及用户体验设计的网络时代,CSS也是要一同参与其中的。大部分人在CSS代码编写中总是先对整体定义字体尺寸,中文情况下一般为12px,而其实这样以来在通过IE顶部菜单中的“察看-文字大小”设置已无任何作用。对字体感觉太小的浏览者而言无疑是种很不好的用户体验过程。其实这一切都可以避免,那就是使用em单位作为字体显示单位。浏览器的默认字体高都是16px,所以未经调整的浏览器在显示1em=16px。换算过来的话也就是说1px=0.0625em,也就是12px=0.75em, 1

2010-12-24 10:28:00 556

原创 剖析微软WPF展示层技术将带给我们什么?——出自《IT168》

微软在TechEd 2005时就已经发表.NET Framework 3.0,整体架构堆栈是在原有的.NET Framework 2.0上,附加4种新技术:革新使用者体验的Windows Presentation Foundation(WPF)、高安全性通讯的Windows Communication Foundation(WCF)、塑造商业流程范围的Windows Workflow Foundation(WF)以及Windows CardSpace等。今年TechEd 2006上,微软接连2场议程

2010-12-09 15:25:00 783

原创 windows表现层基础类库WPF揭密——出自《IT168》

<br />一 WPF会带来什么? <br />    Windows表现层基础类库(WPF) ,曾以Avalon为代号,是.net 框架3.0(曾使用代号WinFX)的图形子系统,与XAML密切相关。在微软下一代WINDOWS操作系统 VISTA 中会预装WPF。WPF也可安装在Windows XP SP2 和 Windows Server 2003操作系统。WPF为构建应用系统提供了一致的编程模型,对用户界面和商业逻辑给予清晰地划分。基于WPF的应用程序可以部署在本地系统或者浏览器平台。WPF为wind

2010-12-09 15:05:00 813

原创 WPF中,如何使用图像API进行绘制而不是XAML?——出自《IT168》

<br />首先,由于WPF中不象GDI+中有Graphics对象,因此你无法使用Graphics进行绘图了,取而代之的是:DrawingContext;类似地,GDI+中的OnPaint已被OnRender取代。其次,UIElement有一个OnRendar方法,它的定义是:<br />protected virtual void OnRender (DrawingContext drawingContext)<br />但我们不能直接调用OnRender方法,也不能直接创建DrawingCo

2010-12-09 14:52:00 758

原创 WPF中控件与控件值的绑定——出自《IT168》

<br />WPF支持以下几种绑定: <br />(1)控件到控件的绑定<br />(2)XML数据的绑定(含内联XML数据和外部XML文件数据) <br />(3).Net对象的数据绑定<br />(4)DataSet,DataTable等数据绑定<br />下面几篇中陆续说明这几种数据绑定的情况,希望对学习WPF的你有所裨益。<br /><br />1. 控件到控件的绑定<br /><Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/p

2010-12-09 14:35:00 687

原创 浅谈WPF中对控件的位图特效——出自《IT168》

<br /> 在WPF中,使用BitmapEffect对所有Visual对象进行位图特效处理(比如文本,按钮,图像,甚至矩形、画布等),它是基于像素级别的,而且是基于软件处理模式而非硬件加速的处理模式。<br />BitmapEffect在控件渲染时起作用,当控件渲染时,该Visual对象转化成相应的BitmapSource并作为BitmapEffect的输入,显示为经过BitmapEffect处理后的效果。<br />我们可以对控件进行以下几种常见的位图特效处理:<br />(1)虚化效果(BlurBit

2010-12-09 14:00:00 915

原创 WPF中获取鼠标相对于屏幕的位置——出自《IT168》

<br />WPF 编程时,我们经常使用Mouse.GetPosition(IInputElement relativeTo)或MouseEventArgs.GetPosition(IInputElement relativeTo)来获取鼠标相对于某一界面元素的相对位置,这自然也联想到另外的一个问题:如何获取鼠标相对于屏幕的位置。  在WPF文档中找了半天也没找到。<br /><br />但我们别忘了 System.Windows.Forms.Control类中有一个静态属性 System.Windows.

2010-12-09 11:27:00 585

原创 使用Grid来对WPF页面进行布局排版——出自《IT168》

    对于以前用 Windows Form 来开发客户端程序的程序员,在使用 WPF 开发客户端的程序时,在窗体布局上将是他必须面对的一个坎。    布局产生困惑的一个典型场景如下:    我们在开发WPF窗体时候,我们会发现,当我们把菜单控件(Menu)、工具条(ToolBar、ToolBarPanel)、状态条(StatusBar)这些最常见的页面元素拖动到WPF窗体的时候。我们会发现 WPF 窗体中,这些页面元素可以放置在任何位置,而不是之前 Windows Form 那样:主菜单在最上面,状态条在

2010-12-09 10:44:00 806

原创 WPF中展开一个TreeView控件的所有树节点——出自《IT168》

<br />    在 Windows Form 应用中,我们碰到需要展开一个TreeView 控件的所有树节点的时候很简单,微软已经替我们提供了ExpandAll 方法,我们只要简单的一行代码tv_QTree.ExpandAll();就可以了。即 System.Windows.Forms 命名空间的 TreeView.ExpandAll 方法。<br /><br />    在WPF中,我们会发现,System.Windows.Controls.TreeView 中没有了 ExpandAll 方法。唯一跟

2010-12-09 10:15:00 538

原创 捕捉WPF应用程序中XAML代码解析异常——出自《IT168》

    由于WPF应用程序中XAML代码在很多时候是运行时加载处理的。比如DynamicResource,但是在编译或者运行的过程中,编写的XAML代码很可能有错误,此时XAML代码解析器通常会抛出称为 XamlParseException的异常。但是抛出的XamlParseException异常提供的信息非常简单,或者是很不准确。此时我们关于通过对变通的方法来获取更多的异常信息:    我们知道,WPF应用程序中的XAML代码是在InitializeComponent方法中解析的。而这个方法通常位于窗口对

2010-12-09 10:02:00 505

原创 为WPF中DropShadowBitmapEffect提供轻量级的替代品——出自《IT168》

<br />    WPF有一个激动人心的新特性:我们可以很方便地为可视元素提供位图效果(BitmapEffect),比如阴影等.但令人沮丧的是位图效果是非常消耗CPU资源的,从平时的开发中我们几乎可以得出的两条经验:1,尽量少地使用位图效果,因为它是由CPU计算的而不是GPU. 2,不要将位图效果与稍稍复杂一点的动画(Animation)使用,它常常使动画变得很不流畅. <br />    在位图效果中,最常用的当数阴影(DropShadowBitmapEffect),这里有一个DropShadowBit

2010-12-09 10:01:00 806

原创 WPF使用流文档灵活地显示内容——出自《IT168》

    Windows® Presentation Foundation (WPF) 提供了一系列功能。事实上,功能是如此之多,以至于其中一些非常重要的功能都没有得到应有的关注。一个最好的例子就是“流文档”功能,它可让开发人员在 WPF 中本机创建文档。“流文档”针对屏幕显示以及提供更动态和可以论证的更复杂模型。“流文档”几乎适用于与文本内容相关的所有方面,从产品说明到整本书籍。    文本显示无疑是更重要的 UI 功能之一。在 WPF 界面中,您通常使用标签等控件来显示文本。但是在许多情形下,您需要的不只

2010-12-08 14:59:00 2787

原创 WPF指南之XAML的名字空间——出自《IT168》

<br /><br />   xmlns的作用是设置XML文件的命名空间。类似的,xmlns:x的作用也是指定命名空间。这里为什么是x而不是其他的,我们可以简单的理解为其只是MS的一个命名而已,没有任何特殊的意义,当然,为了避免和它的冲突,我们定义自己的命名空间的时候不能是x。<br />   而另一个x:Class的作用就是支持当前Window所对应的类,前面已经说过每个XAML元素都是一个CLR类型,这里的x:Class是 Window的一个属性,属性的内容指出当前的窗口类是FirstXAML名

2010-12-07 17:14:00 438

原创 WPF的Dependency Property System——出自《IT168》

<br /><br />今天我们来看看WPF的基础:DependencyProperty System。在WPF中,所有的属性(可以在XAML进行设置的属性)都依赖于此功能,所以说他是WPF的基础我想并不为过吧。.在WPF中,Dependency Property System为我们提供了一个访问XAML中设置的属性的入口,通过他我们可以为属性设置默认的值,设置属性的表达式、值的范围等,还可以通过他获得属性改变的事件。<br />    Dependency Property System在框架

2010-12-07 15:56:00 713

原创 WPF的Attached属性——出自《IT168》

<br /><br />本篇,我们再继续看一种特殊的Dependency属性:Attached属性。Attached属性可以非常高效地Attach到其他的对象中。<br />我们仍然用前面的一个简单XAML代码为例:<br /><Window><StackPanel><Label>LabelText</Lable></StackPanel></Window> <br /><br />   现在,如果需要对StackPanel及其子元素设置字体大小,应该如何做呢?在Window元素中,

2010-12-07 13:56:00 560

原创 WPF中的传递事件——出自《IT168》

<br />传递事件<br /><br />    WPF在.NET简单事件通知之上添加了很多基础结构。传递事件的设计使得事件可以与元素树一起很好的工作。事件发生后,可以在视觉树和逻辑树自动地进行上下传递,我们不需要添加任何额外的代码。<br /><br />    传递事件使得我们不需要过多关注于视觉树,这样封装对于我们理解WPF的元素合成非常重要。比如,我们点击一个按钮的事件,在点击的时候我们实际上点击的是一个ButtonChrome或者TextBlock,也就是说我们点击的是Button的内容

2010-12-07 11:17:00 905

原创 WPF中的命令与命令绑定——出自《IT168》

<br /> <br /><br />   说到用户输入,可能我们更多地会联想到键盘、鼠标、手写笔,其实还用一种高级别的输入——命令(Commands),从WPF类库角度讲他们分别对于Keyboard, Mouse,Ink与ICommand。命令是一种语义级别的输入而不是设备级别的,比如“复制”与“粘贴”,但实现一个命令可以有很多中方式,比如“粘贴”,我们可以使用CTRL-V,也可以使用主菜单或右键菜单(上下文菜单)等等。在以往的.net版本中,要在软件界面上添加一个“粘贴”按钮,是非常麻烦的事情,你得

2010-12-07 10:28:00 569

原创 WPF中的命令与命令绑定——出自《IT168》

<br /> <br /><br />   说到用户输入,可能我们更多地会联想到键盘、鼠标、手写笔,其实还用一种高级别的输入——命令(Commands),从WPF类库角度讲他们分别对于Keyboard, Mouse,Ink与ICommand。命令是一种语义级别的输入而不是设备级别的,比如“复制”与“粘贴”,但实现一个命令可以有很多中方式,比如“粘贴”,我们可以使用CTRL-V,也可以使用主菜单或右键菜单(上下文菜单)等等。在以往的.net版本中,要在软件界面上添加一个“粘贴”按钮,是非常麻烦的事情,你得

2010-12-07 10:27:00 388

原创 WPF的逻辑树和视觉树——出自《IT168》

<br /> <br />这部分的内容来自于即将出版的新书《WPF Unleashed》的第三章样章。关于什么是逻辑树,我们先看下面的一个伪XAML代码的例子:<br /><Window ......><StackPanel><Label>LabelText</Lable></StackPanel></Window>  <br />在这样一个简单UI中,Window是一个根结点,它有一个子结点StackPanel。而StackPanel有一个子结点Label。注意Label 下还有一个子

2010-12-07 09:50:00 513

原创 WPF与Win32——《IT168》

GDI是当今应用程序的主流图形库,GDI图形系统已经形成了很多年。它提供了2D图形和文本功能,以及受限的图像处理功能。虽然在一些图形卡上支持部分GDI的加速,但是与当今主流的Direct3D加速相比还是很弱小。GDI+开始出现是在2001年,它引入了2D图形的反走样,浮点数坐标,渐变以及单个象素的Alpha支持,还支持多种图像格式。但是, GDI+没有任何的加速功能(全部是用软件实现)。    当前版本的WPF中,对一些Win32功能还没有很好的支持,比如WMF/EMF文件,单个象素宽度的线条等等。对于

2010-12-07 09:23:00 414

原创 WPF中的Style——出自《IT168》

<br />Style是一种修改属性值是方法。我们可以将其理解为对属性值的批处理。对批处理大家应该不会感到默认。对,通过Style我们可以批量修改属性的值。先从一个简单的Style例子开始:<br /><Window x:Class="Viewer3D.WindowSettins"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/20

2010-12-06 17:54:00 453

原创 WPF性能优化点——出自《IT168》

<br />   在建立漂亮UI的同时,我们还需要关注应用程序的性能,WPF尤其如此。下面从MS的文档中总结出了一些有用的性能优化点。在实际编写的过程中,可以参考。这个Post非完全原创,是根据一些文档总结出来的。<br /><br />    1、建立逻辑树的时候,尽量考虑从父结点到子结点的顺序构建。因为当逻辑树的一个结点发生变化时(比如添加或删除),它的父结点和所有的子结点都会激发Invalidation。我们应该避免不必要的Invalidation。<br /><br />    2、当我

2010-12-06 17:49:00 397

原创 WPF性能优化点——出自《IT168》

<br />   在建立漂亮UI的同时,我们还需要关注应用程序的性能,WPF尤其如此。下面从MS的文档中总结出了一些有用的性能优化点。在实际编写的过程中,可以参考。这个Post非完全原创,是根据一些文档总结出来的。<br /><br />    1、建立逻辑树的时候,尽量考虑从父结点到子结点的顺序构建。因为当逻辑树的一个结点发生变化时(比如添加或删除),它的父结点和所有的子结点都会激发Invalidation。我们应该避免不必要的Invalidation。<br /><br />    2、当我

2010-12-06 17:48:00 367

原创 WPF图形系统——出自《IT168》

<br /><br />   在Windows NT中,图形多媒体系统基于层次结构。应用程序与顶层的API(实际上是多个用户模式的系统DLL,比如GDI32.DLL)交互,这些系统DLL最终会通过系统服务调用处于内核模式的系统服务。NT系统的详细信息可参考《Windows 图形编程》的第一、二章。在Windows Vista中,图形系统已经移出了内核模式,并有自己的空间--WPF。 WPF移出内核除了全面提高稳定性(内核模式中通常需要共享资源),也使得实现内核模式高级控制成为可能。<br />   

2010-12-06 17:28:00 468

原创 揭露WPF SDK“不能说的秘密——出自《IT168》

<br /><br />如果经历过.NET的1.0,1.1以及2.0版本,你就很可能发现.NET 3.0中的WPF区域中的一些文档有点不同。具体来说,WPF负责介绍几个CLR和托管代码封装方面的新概念。WPF SDK团队为在参考资料中展示这些新概念而做的努力是很大的进步,主要致力于改变,因为其它的技术也在它们的API中采用了相同或者类似的范例。<br /><br />System.Reflection和.NET 3.0 SDK <br /><br />   微软用于创建托管SDK框架的“魔法”其实就是映

2010-12-06 17:22:00 457

原创 WPF中的控件模板(ControlTemplate)——出自《IT168》

<br /><br />WPF包含数据模板和控件模板,其中控件模板又包括ControlTemplate和ItemsPanelTemplate,这里讨论一下ControlTemplate。<br /><br />   其实WPF的每一个控件都有一个默认的模板,该模板描述了控件的外观以及外观对外界刺激所做出的反应。我们可以自定义一个模板来替换掉控件的默认模板以便打造个性化的控件。<br /><br />    与Style不同,Style只能改变控件的已有属性值(比如颜色字体)来定制控件,但控件模板可以

2010-12-06 16:08:00 343

原创 WPF中的控件模板(ControlTemplate)——出自《IT168》

WPF包含数据模板和控件模板,其中控件模板又包括ControlTemplate和ItemsPanelTemplate,这里讨论一下ControlTemplate。   其实WPF的每一个控件都有一个默认的模板,该模板描述了控件的外观以及外观对外界刺激所做出的反应。我们可以自定义一个模板来替换掉控件的默认模板以便打造个性化的控件。    与Style不同,Style只能改变控件的已有属性值(比如颜色字体)来定制控件,但控件模板可以改变控件的内部结构(VisualTree,视觉树)来完成更为复杂的定制,

2010-12-06 16:04:00 362

原创 WPF中的命令简述——出自《IT168》

在我们日常的应用程序操作中,经常要处理各种各样的命令和进行相关的事件处理,比如需要复制、粘贴文本框中的内容;上网查看网页时,可能需要返回上一网页查看相应内容;而当我们播放视频和多媒体时,我们可能要调节音量,快速拖动到我们想看的片段等等。在Winform编程中,我们经常使用各种各样的控件来解决此类问题,当然我们也必须编写一堆代码来处理各种各样的命令和事件处理。那么,Windows PresentationFoundation (WPF)作为微软新一代图形图像支援系统,它是如何处理这些命令及事件的呢? 

2010-12-06 11:13:00 353

原创 WPF的数据处理——出自《IT168》

<br /> 数据绑定,这是WPF提供的一个真正的优点。除了可以用在传统的绑定环境中,数据绑定已经被扩展应用到控件属性上。学习应用数据绑定,也能真正的体现XAML的好处。到底什么是数据绑定呢?也许你从字面上已经理解的很不错了。通过数据绑定,我们在应用程序UI和程序逻辑之间建立了一种联系。正常建立绑定后,在数据的值发生改变后,绑定到数据的元素将自动更新、体现出数据的变化。<br />    同样,我们先看几个相关的知识点:<br /><br />    1、DataContext属性。设置DataContex

2010-12-03 17:29:00 298

原创 WPF指南之WPF的结构——出自《IT168》

WPF进入我们的生活已经有一段时间。个人认为在UI的实践中,用户需要的是易于操作的,更加绚丽的界面。这两个应该是最基本、也是最重要的宗旨。而对于开发人员就是要用最简单的方法开发出尽可能漂亮的界面,并且效率也不能太差。除了在一些Web开发和特殊的应用中,很少有开发组配备单独的美工,至少目前是这样吧!根据自己目前对WPF的了解程度,感觉WPF在其中某些方面确实有超强的震撼力。    客观上讲,Vista操作系统确实给我们带来了无可比拟的视觉效果。我自己深有体会,在近2个月的时间里每天都是在Vista下的开发

2010-12-03 17:12:00 372

原创 WPF指南之XAML概述——出自《IT168》

<br />在我开始看WPF文档开始的几天里,脑子里形成了一种错误的想法:WPF不就是XAML码?当时的感觉就是郁闷啦,我学习WPF还得弄这个东西。给人的第一感觉就是WPF很复杂。虽然对WPF的熟悉和了解还不是特别多,但现在已经知道这确实是一种错误的想法。 <br /><br />    Charles Petzold先生曾有一篇文章介绍了WPF、XAML的一些关系(The Two APIs)。文章中说明了WPF为什么很复杂:因为WPF有两套API,一套用于普通的编码访问(比如C#、VB.N

2010-12-03 15:15:00 318

原创 WPF开发简介——出自《IT168》

要赢得世界,必须在恰当的时间做出恰当的事。这一点,微软做到了。历经微软DOS,Win 31, Win95, Win 98, Win 2k, WinXP, 一路走来,一次比一次热闹,一个比一个精彩、炫丽。Vista的宣传更是轰轰烈烈,喧嚣日上。Microsoft总是有能力在恰当的时间制造出意料中的轰动,Vista一经推出便让IT业界趋之若鹜。     一、掀起你的盖头来,让我看看你的脸——.NET Framework 3.0     与微软对Vista锣鼓宣天的推广相比,对与之相伴的.

2010-12-03 14:49:00 932

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除