- 博客(22)
- 收藏
- 关注
原创 什么是DataTemplate
DataTemplate即数据模板,就是说数据的呈现定义,比如ListBox,我们可以为ComboBox的Item定制数据模板,在下拉ComboBox的时候每一个Item就会按照数据模板的定制来呈现。
2008-09-19 10:25:00
401
原创 什么是DependencyObject?
在使用DependencyProperty的时候我们使用了GetValue和SetValue这两个函数,某些朋友可能并不会去研究它们是来之哪个类,其实它们是由DependencyObject提供的。DependencyObject是WPF中比较顶层的一个类,它继承之DispatcherObject,看过WPF类图的人会发现,WPF的大部分的类都是直接或间接继承之DependencyObject,很
2008-09-12 16:56:00
4754
原创 什么是DependencyProperty?
DependencyProperty在WPF中是一个相当重要的概念,几乎在WPF的应用中都应该会使用到它。但是对于刚从WinForm转过来的人可能会不以为然,仍然使用原来的属性书写方法(定义一个数据成员,然后给这个成员添加一个属性),不是说不能这样使用,但是在WPF中使用DependencyProperty会更高效,而且更加便捷。下面是我学习DependencyProperty的总结。一.实现一个
2008-09-11 10:46:00
7583
原创 C# Nullable 类型总结
前几天突然使用到了Nullable类型,因为比较少用,所以忘了如何使用,查阅了相关资料,总结如下(参考之MSDN)。1. Nullable类型是一个结构:System.Nullable, 书写格式为:T?。其中T为任何值类型。2. Nullable类型的意思就是为原来的T增加一个格外的值:"null"。这个是相当有用处的,比如CheckBox的状态,它有3种状态:checked,unchecked
2008-09-11 09:46:00
1247
原创 运行时类型信息--RTI的一个简单实现
相信使用过C# 的朋友应该都会对运行时类型(Type) 很熟悉,在面向对象的编程中它能够给我们提供很多方便,它可以检测出实例对象的类型,避免类型转换错误,它提供的功能当然不止这个,如果有兴趣大家可以详细看看C#中的Type类。可是在C++中就没有这个好东西了,那么就让我们自己来给我们的C++程序制作一个“Type”类吧!在下面我将会提供Type类的一个最简单实现以及一个初始化类型例子。
2007-03-21 21:06:00
879
原创 Proxy
定义:Provide a surrogate or placeholder for another object to control access to it. 如图: (上面的定义和UML图摘之:http://www.dofactory.com/Patterns/PatternProxy.aspx)使用代理可以对一个对象进行访问控制,当我们要创建一个开销很大的对象时,一般我们
2006-11-25 13:40:00
699
原创 ObjectARX:C# ObjectARX--关于实体
1.得到模型空间中所有实体: public ListObjectId> GetEntitiesInModelSpace() { ListObjectId> objects = new ListObjectId>(); using (Autodesk.AutoCAD.Databa
2006-09-27 19:13:00
3553
4
原创 ObjectARX:C# ObjectARX--起步
注:适合于有C++ ObjectARX开发经验的朋友。1. 新建一个C# 的库工程,名字就叫做HelloWorld2. 添加acdbmgd和 acmgd这两个引用,它们都放在你的AutoCAD安装目录里面3. 把启动程序相设置为AutoCAD准备工作就这么简单。加入第一句语句:[assembly: Autodesk.AutoCAD.Runtime.CommandC
2006-09-27 19:05:00
2263
原创 C#: Reflection
反射(Reflection): 就是能够在运行时刻查询到类型信息的进程。他有以下的各个部分,可以根据你应用的需要选择其中的一个或者某些来使用:1. Assembly:使用它来定义和加载一些Assembly, 加载存在于Assembly 中的modules,并且可以得到这个Assembly的类型,同时创建他的实例(MSN原文:Use Assembly to define and load
2006-09-26 19:14:00
1428
转载 设计模式
设计模式是对特定问题经过无数次经验总结后提出的能够解决它的优雅的方案。但是,如果想要真正使设计模式发挥最大作用,仅仅知道设计模式是什么,以及它是如何实现的是很不够的,因为那样就不能使你对于设计模式有真正的理解,也就不能够在自己的设计中正确、恰当的使用设计模式。本文试图从另一个角度(设计模式的意图、动机)来看待设计模式,通过这种新的思路,设计模式会变得非常贴近你的设计过程,并且能够指导、简化你的设计
2006-09-25 21:59:00
853
原创 OpenGL:模型变换
讲到模型变换,那就要涉及到矩阵的操作了,虽然OpenGL已经为我们包装好了各种模型变换的操作,使矩阵变对用户透明的了,我们只是调用它提供的API实现这些操作就行,但是在这里还是有必要讨论一下矩阵的一些基本知识,这里说的是模型矩阵(4X4的矩阵),当然我也是赞同使用OpenGL 提供的模型转换API,既然人家已经包装好,我们干嘛不用呢? 不用那多浪费呀。OpenGL模型矩阵,请看下图:
2006-09-23 09:43:00
2273
1
原创 C#:代表(delegate)和事件(event)
代表和事件是使用C#语言两个非常重要的概念,如果你不会使用代表和事件,那就说明你不会用C#进行软件开发。代表(delegate): 它是C#语言里面的函数指针,代表可以指向某一个函数,在运行的时候调用这个函数的实现。下面来看看它的实现步骤: 声明一个delegate对象。 实现和delegate具有相同参数和返回值的函数实现(可以是静态和非静态的)。
2006-09-23 08:37:00
947
转载 软件设计:重构
重构 重构(Refactoring)就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。 也许有人会问,为什么不在项目开始时多花些时间把设计做好,而要以后花时间来重构呢?要知道一个完美得可以预见未来任何变化的设计,或一个灵活得可以容纳任何扩展的设计是不存在的。系统设计人员对即将着手
2006-09-22 19:58:00
834
原创 设计模式:Facate
先来看一下四巨头对Facate的定义: Provide a unified interface to a set of interfaces in a subsystem. Façade defines a higher-level interface that makes the subsystem easier to use. 提供一个统一的接口给子系统的一系列借口,其定义了一个更高层次的接
2006-09-22 19:33:00
638
原创 设计模式:Singleton
请大家先看一下下面的UML图: 它表示的是什么呢?它表示的是一个类只有一个实例,在一个应用程序中这个类不可能有第二个实例,这种模式我们经常用到。下面来看一个C# 写的例子 class Singleton { private static Singleton instance;//声明一个静态(全局)实例 //在这里大家要注意,为了不让用户可以随意new出该
2006-09-21 23:14:00
788
原创 Java: I/O 技术二:文件流操作
在java I/O技术一中,阐述了java是如何对文件进行操作的,同时也举了一个例子DeleteFile。很多时候我们并不单单只对文件进行操作,我们还想对它里面的数据进行操作,这个时候我们就需要Java提供给我们的一个叫做“流”(Stream)的东西了。Stream是一个对象,它能够读出数据,也能够写入数据,这两个操作分别使用InputStream,OutputStream或者其派生类 来实现
2006-09-21 22:53:00
508
原创 OpenGL:OpenGL Render Context :RC
首先让我来先jieshaoOpenGL的工作模式(C/S)OpenGL是一种基于客户/服务器和管道(PipeLine)的图形库,即一个应用程序将各种命令和数据写入管道,这些命令和数据将被暂时保存起来,图形库直到收到一条专门的指令才会开始处理它们,并将处理结果通过管道传给用户。OpenGL工作模式如下所示: 1. 建立管道2. 根据需要向管道中
2006-09-21 20:35:00
4217
1
原创 Java: I/O 技术一:文件操作
在java中,I/O是通过java.io包中的类和接口来实现,所以理所当然的,我们第一步要做的就是import这个包了。java.io提供了一个File类,这是类很容易让人产生误会,它表示的是一个文件名或者目录名,而不是文件本身,所以通过这个类没法对文件里面的数据进行操作。File类提供了一序列对文件操作的功能:删除文件,创建目录,查询文件大小等等。要想对文件数据进行操作那就需要流对象了,在这
2006-09-20 20:57:00
1258
4
原创 C++:静态联编和动态联编
联编就是将模块或者函数合并在一起生成可执行代码的处理过程,同时对每个模块或者函数调用分配内存地址,并且对外部访问也分配正确的内存地址,它是计算机程序彼此关联的过程。按照联编所进行的阶段不同,可分为两种不同的联编方法:静态联编和动态联编。静态联编是指在编译阶段就将函数实现和函数调用关联起来,因此静态联编也叫早绑定,在编译阶段就必须了解所有的函数或模块执行所需要检测的信息,它对函数的选择是基于指向
2006-09-20 12:49:00
4573
1
原创 OpenGL:显示流程
首先大家先看一下下面的这个流程图:这个图很清晰的说明了一个3D模型是怎么样一步一步被处理,直到显示到屏幕上。世界坐标系中的三维物体,在计算机中是用一组3维坐标值来表示的,而这个显示到屏幕上的过程就是把这组三维坐标转化成屏幕二维坐标的过程。第一步:三维几何变换,这是一个矩阵相乘的数学过程;在图形学里面我们可以通过一个矩阵来对坐标值进行“平移”,“缩放”(这里是指坐标值的放大缩
2006-09-20 10:30:00
2042
1
原创 C# 序列化技术
一:BinaryFormatter序列化序列化简单点来理解就是把内存的东西写到硬盘中,当然也可以写到内存中(这个内容我会在后面写一个例子).而反序列化就是从硬盘中把信息读到内存中.就这么简单,呵呵,现在来看下面的例子吧!在这篇文章中我将使用BinaryFormatter序列化类Book作为例子,希望大家能从例子中深刻体会什么是序列化.定义类Book: [Serializable]
2006-05-20 10:55:00
3029
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅