GDI+不支持异或绘图,而使用双缓存方式,避免了图形闪烁,但是速度稍慢,占用内存较多。随着硬件发展,这是一个图形编辑器的趋势;
用 GDI+ 开发矢量图形编辑系统的经验之谈
性能篇
“经过无数次的实验,终于形成了自己的代码风格”:声明两个Bitmap对象,一个用于即时的图形绘制,另一个用于存放已有的图形。在用鼠标绘图的过程中,直接把Bitmap复制到绘图窗口所对应的Graphics上,以提升绘图的速度;
避免用三角函数、平方根、除法;
避免大量使用Structure;
不同的图元有不同的图像拾取算法,一般常用的矢量计算方法可以保证较高的算法效率;
项目的对象建模
要考虑几个方面:确定图元、图元参数的保存和处理、坐标系、图像时拾取。
操作图元参数时,直接把像素值保存在图元参数中比较方便。因为Single类型的“数据还原性”很差,而图形经过旋转、缩放、坐标系变换后,必须用double类型处理,所以可以考虑把所有图元参数全部用double类型处理,损失一些性能但换来了易用性。
http://www.cnblogs.com/bluntsword/archive/2005/08/10/211363.html也提到了GDI+采用float类型带来的精度问题。另外此文提出要解决精度的问题,需要避免使用坐标变换。整个绘制过程中保持
“世界坐标系”和设备坐标系统一,然后自己记录实际坐标与设备坐标的缩放和偏移,然后在绘制时将实际坐标转换为设备坐标。
“自己进行坐标转换也不难,简单的仿射变换”
READ:《GDI+的雷区 》
http://blog.csdn.net/Nightmare/archive/2005/04/22/359092.aspx
GDI+变换之后的坐标被限制在以下范围
x -4194304.0f
y -4194304.0f
width 8388608.0f
height 8388608.0f
如果超出范围,图形画不出,
INST:了解GDI+ 2.0所作的改进
INST:了解“放射变换”作坐标变换
posted @
2008-06-19 19:54 yicone 阅读(31) |
评论 (2) |
编辑
Expression Web使用问题
1. 在Expression Web中,如何在设计时预览ASP.NET Master Page或普通页面时,能够查看应用了theme后的效果?
无论在Visual Studio 2008,还是Expression Web SP1中,都没有找到可以在设计时预览theme的功能。初步推断,ASP.NET的Theme功能是运行时的行为,需要经过服务器的处理才能展现,尤其是其中针对服务器端控件的Skin特性。由此得出,解决预览问题的粗糙方式,是将Theme中定义的css文件导入到ASP.NET页面中,来查看应用静态样式后的效果。这里可以采用在母板页中引入css文件,以避免重复对多个ASP.NET页面进行css导入工作。
2. 如何在Expression Web中启用浏览器来预览ASP.NET页面?
如果没有IIS,则此功能需要安装ASP.NET Development Server。我在初次安装Expression Web时的确没有勾选安装这个东东,因为那时我已经安装了Visual Studio 2005,我认为那意味着已经存在了ASP.NET Development Server。但在Express Web的菜单项/Site/Site Settings -Preview中,我看到的情况如下:
即软件提醒我ASP.NET Development Server没有被安装。于是我在添加删除程序中修改Expression Web的安装,勾选了ASP.NET Development Server。但两次重复尝试的结果,得到的都是与上图一样的情况!
无奈之下,换了个变通的办法,即使用上图中的设置来达到可以预览ASP.NET页面的目的。具体解释一下:
1. 在VS安装目录中找到WebDev.WebServer.exe(这就是ASP.NET Development Server);
2. 建立一个桌面快捷方式,指向该程序,并在快捷方式的地址中定义好程序需要的参数(例如:C:\Windows\Microsoft.NET\Framework\v2.0.50727\WebDev.WebServer.EXE /port:2189 /path:"d:\MyCurrentWebProject" /vpath:"/");
3. 双击运行创建好的快捷方式,再配合上图中的设置,就可以在Expression Web中预览ASP.NET页面啦。
(P.S. VS2008 SP1 BETA和Expression Web 2试用版都可以下载了,后者提供了Expression Web Development Server,不知道和ASP.NET Development Server是不是同一个东东)
相关资源
Expression Web的插件:
http://www.j-moves.com $10.99 FREE 15 day
http://www.panemanager.com $34.95 15 days FREE
今日阅读
Brian Simmons ASP.NET 2.0 Theme Creation using ITracker
http://www.simmonswebdesign.net/artITracker.asp
读后总结:
优秀的设计网站,Sitepoint 和www.csszengarden.com
优秀资料,HTML Utopia: Designing Without Tables Using CSS、The Photoshop Anthology
网页设计的流程(讨论):
在Photoshop中绘制mockup
得到客户对mockup的确认。作者认为这是Web项目最拖慢进度的步骤,在这期间谨记在得到客户完全的认同以及没有形成文档之前,不要开始下一步工作。
从mockup中切图、搜集素材
使用Expression Web(或DW)将设计实现在一个单独的HTML页面内,将全部的CSS也放置在此页面。尽早测试,完成一部分的测试再开始下一部分。如果遇到布局问题,检查元素和环绕它的元素的padding和margin。
在VS中创将Web项目或网站,建立theme和相应的skin,建立母板页,在Web.config中设置theme
在skin中修改部分空间的样式,如GridView
测试,测试,测试
App_Themes文件夹的组织结构:
/Theme1 /Theme1/Images /Theme1/Skin1.skin /Theme1/styles.css
作者对工作流程的认识,对各步骤注意事项的认识,是在不断的摸索和实践中形成的。勿骄勿躁!
posted @
2008-05-18 15:41 yicone 阅读(36) |
评论 (0) |
编辑
和几个朋友一起做私单,在开始时遇到一些问题,所以想整理一下思路,也为以后的合作积累一些经验。
目前项目缺乏协调人。几个人的关系比较特殊,四个人,我和A,B,C。熟不熟的情况是这样的:我和A熟,A和B熟,B和A、C都熟。个人希望B能担起PM的责任,但尚未得到大家和时间的确认。协调人来负责分工,大家依据自己的模块独立进行开发,遇到问题大家一起讨论,这是我目前想到的协作方式。接下来的几天,也搜搜其他协作方式的资料。无论选择何种协作方式,目的都是为了提高团队的效率,而重点在于让大家都发自内心的接受这种方式。
沟通方面
我们的沟通方式是通过QQ群和项目论坛完成的。目前一些初期的文档草案都放在QQ群的共享中,但这些文档可能会不断修改,如果能将文档加入版本控制,可能会更好些。比如Google Docs就提供了协作编辑和版本记录的功能。
另外,大家工作的地点不同,时间也经常对不到一起,所以在讨论一些长期需要考虑和讨论的问题时,论坛的形式会更好些。Google网上论坛其实是一个披着论坛皮的邮件列表,这使大家通过邮箱就能及时得到新信息。
这两天的工组情况是,A负责概要设计;B主要与客户接洽,拿需求;C则挑了一些难点去攻关。我这两天则做了一些凌乱的工作,如选择源码管理服务、建立项目讨论组、给大家准备一些资料、自己了解需求、初步分析了一个大模块……,最重要的工作就是希望和大家都尽快熟悉起来,所以花了不少时间与大家讨论。但讨论的效果还不够好,主要是因为几个人工作的时间不一致,而对项目论坛的使用还没有真正开始。
自己的定位
写文章时,还没有形成清晰的定位,从这两天的工作来看,自己已经参与了各种角色,没有十分明确的重点。从初衷上讲,并不奢望能从这个单子上挣到钱,只是希望找些有意义的事来做。半年的项目冰河期让我手痒痒,不想荒废了自己,也担心缺少新积累的项目经验,会对将来的求职不利;另外,希望掌握更多的Web开发的经验,从而走一条长远发展的路。除却这两点,松散的合作开发方式所积累的经验也会对将来有利。
项目开发的周期比较短,大家可用的时间也存在不确定性,所以我个人倾向于从开始就抓紧时间,但看大家现在的状态,很难乐观看待。
P.S. Subversion大家都还没有开始用,所以也是一个担心的方面。自己也不太熟悉,所以在团队中推广尚有一点压力。新工具在团队中的推广,一定是个循序渐进的过程,所以我一直暗暗提醒自己,在这方面不要着急。
posted @
2008-04-09 17:32 yicone 阅读(17) |
评论 (0) |
编辑