12 2012 档案
摘要:曾经有个很有意思的面试题,题目是要求写一个程序,求1到100的累加值。不少人写出来的都是这个样子的: int sum = 0; for (int i = 1; i <= 100; i++) sum += i;但是参考答案却是这样的:int sum = (1 + 100)*50; 这道题没有难度,只是告诉你一个问题:不要把所有的工作都交给电脑,那样你的脑子就要生锈了,从另外一个方面讲,如何才能节省CPU时间提高程序的性能,是我们要常常动脑子去考虑的。当发现程序存在性能问题时,首先要做的工作当然是找出...
阅读全文
摘要:在此之前呢我们实现了尺规作图的所有图形元素,这就好比有了各种原材料,而且在上一节实现了数据保存和读取,就好比我们的图形产品能够进行储存和流通了;这一节我们就以工厂为概念来介绍我们复合图形的创建,就好比用原材料生产各种配件,然后用各种配件再组装成各种产品,也来过过老板瘾!管理工厂可不是那么简单的,特别是管人,特别是管90后,哎……,好在我们实现了全机械化操作,所有的生产活动都有计算机完成,呵呵。 首先来看看生产车间如何布局,因为我们工厂刚起步,业务不能太复杂,我们就选择几种主打产品吧,有:1. 线 2. 中垂线 3. 中点 4. 圆 5. 三角形外接圆 6. 点其中点、线、圆属于基础产品,我们已
阅读全文
摘要:这几天年终绩效考核,琐事比较多所以更新得没有以前快了,绝对不是因为网上说的什么微软关闭Silverlight网站的影响啦,就算微软说现在马上抛弃SL,我也要把这个游戏写完,对于那些一边玩着Windows系统,一边大骂.net framework是微软的骷髅的人我一般也没有什么可说的。说到游戏,数据存取这个功能是必须的,不管是游戏设置还是状态什么的,都是可以存成数据文件,然后可以从文件加载。本节就来实现将我们画的图形存成Xml文件,然后可以从Xml文件中加载图形,也只有这样,我们的过关游戏才能实现。要实现数据保存就要现有文件的内容格式,对于我们的坐标系上各个图形元素而言,就是要把他们按照依赖顺序
阅读全文
摘要:目前为止,我们画的图形都没有名字,这给人的感觉就是每个图形都是哑巴,虽然会动但是还无法正常地跟我们交流,这节开始我们就给他们取名字,使其能够表现自己。要命名并且显示在坐标系上,理所当然需要TextBlock了,但是我们以前创建的图形都是基于Shape的,这下就有点小麻烦了,如果在WPF中,我们还可以很方便地继承Shape去画自己的图形,但是在Silverlight中我还没有找到相关的资料可以做到这一点。在此我们只能给原有的CoordinateBase类做点小手术了:我们在该类中增加两个虚方法: protected virtual void ShapeAttached(){} ...
阅读全文
摘要:上节我们实现了属性编辑器,并且遗留了两个主要问题,这节我们实现两个新的功能(掩框和右键菜单)来Fix这两个问题,并且新增一些新的特性。第一个主要问题是【选择】的功能(请注意我将【拽】改成了【选】,因为我们增加了选择以进行属性编辑,以前的拖拽只能选中可移动对象所以不适用了),当我们选中了一个对象,除了属性编辑器有反应外,对象本身无任何反应,如果对象很多,当我们眨了一下眼可能就不记得选中的是哪个对象了,就像在下围棋,不记得刚才下的是哪个子儿,岂不悲乎?解决这个问题,方式不要太多了,例如可以改变对象的样式等,但是这种方式可能与我们的样式编辑器相冲突,所以我们采取另外一种,通过掩框(MaskFrame
阅读全文
摘要:顺便透露一下,我的一个目的就是做一个几何作图的过关游戏,根据过关的等级显示不同的技能,比如初始技能只有【笔】、【尺】、【规】,当你过了用这些初始竟能画平行线这一关,就会多一个技能【平行线】,所以以后就可以更方便地去画平行线了,嘿嘿,是不是挺有趣!如果只讲理论,前面介绍的那些基本已经足够了,但是要做成一个有趣的可玩的游戏,那还是相当低路漫漫其修远啊…,首先要考虑的就是清晰、整洁、美观。所以这一节我们就来实现一个样式编辑器,给我们画的图形化化妆,肉可不吃,色不可戒,哈哈。总结一下我们画的图形,都有哪些视觉上的属性需要考虑呢:线条颜色。填充颜色。线条粗细。线条虚实。透明度。巧的是,我们目前的图形只有
阅读全文
摘要:我们在上一节已经在理论上实现了尺规作图的各个功能,并通过代码创建了示例,如何脱离代码使我们的鼠标能够肩负起尺、规、笔三者的重任呢。这涉及到界面交互事件处理很多繁杂的事情,因此一般纯代码下不需要太注意的细节问题,在界面编程时就必须特别注意,细节决定成败。其实我们之前已经有了一个鼠标行为——拖拽,如果不考虑鼠标右键的话,那么鼠标的委托有三个(MouseUp、MouseDown、MouseMove),我们在拖拽的行为中就是将拖拽行为托付给这些委托来实现的。其他的行为如画点、画线的原理也是如此,如何将这些行为封装使其互不干扰是我们要考虑的。行为不多,其结构也十分简单,如图:在IBehavior中我们提
阅读全文
摘要:前面的分析被总结为两个字——依赖,我们的设计就从依赖开始。如果将相互依赖的各个元素画成一幅图,这种图就有两种形式,一种是树(像我们前面做的表达式解析),另一种就是网。很明显几何作图各个元素之间的关系是一张网,因此我们很难用一个树状的职能型的组织结构来类比地说明它,或者用人际关系之网来比如更恰当一点。不少人都会谈网色变,因为即是网就必然存在闭路,我们的网络短路或者程序死循环大多都拜他所赐,所以首先我们就要注意这个问题。举个例子,比如我们屏幕上有两个自由点A和B,以及依赖于它们的线段AB,我们用鼠标可以拖动自由点A,然后线段AB会跟着发生变化。如果我们用鼠标拖动线段,则A也会跟着移动,A的移动又带
阅读全文
摘要:线上点,这个线可以是直线也可以是曲线,这里统称为线了,因为尺规作图无外乎这两种。按照我们前面对点的分析,线上点是半自由点:它可以随着鼠标拖动始终位于所在的线上这就出现一个问题:比如当线的长度或者圆的大小放生变化时,自由点的位置如何变化?我们前面给出的方案是,比例保持不变:对于直线是“距离比例不变”(严格说是向量CA:BA不变,因为点可能在线段延长线上)对于圆是“角度比例不变”(即圆上点C与参照直径PQ的起点P相对圆心的夹角不变)如下图所示:上图中红色点即为鼠标拖动线上点C(黄色)时,鼠标的位置,因为我们不控制鼠标的移动,所以鼠标可以移动到线外,那么要确定C的Ratio,就需要计算了,从上图可以
阅读全文
浙公网安备 33010602011771号