- 博客(57)
- 收藏
- 关注
原创 OpenPainter: 画布坐标系统
这个其实本身没啥好研究的,但是历史证明,我两年前由于没有明确直观地对各个坐标系统及其转换关系进行定义,导致实际开发的时候非常混乱,好几次坐标转换都是通过试错的方式来完成的。为了这一次的重新开发顺利,将坐标系统定义整理在此。 首先说明涉及到的三个坐标系统:Document,ZoomedDocument 及 Canvas。它们都是以像素为单位的,坐标方向从左上至右下。 Document:基于图像文档本身实际像素,原点即图像左上角。所有的真实绘图操作都应基于该坐标系。 ZoomedDocumen
2010-06-21 10:55:00
3775
原创 PS 研究:圆形笔刷与渐变曲率
这两天在比对 PS 的笔刷(Paintbrush)工具的硬度(Hardness)参数时,发现由笔刷直接绘出的圆形和由形状路径填充画出的圆形并不相同,注意下面的图: 同样是半径为 100 像素的圆,左图是由形状图层加渐变填充而得,右图是直接由硬度为 0% 的笔刷单击绘成。 可以发现,右图似乎比左图的尺寸稍大,且渐变更加平滑。左图最外圈似乎有着明确的边界线,不像是平稳过渡到纯白的。看来,PS 笔刷中的硬度渐变并非简单的径向线性渐变。为了更精确地进行分析,我检查了不同半径处的实际颜色,将每 10% 的
2010-06-11 16:55:00
2416
原创 关于绘图软件中参考线及网格对齐的改进
无论是 2D 还是 3D 绘图软件,参考线对齐和网格对齐已经成为一项标准功能——即使在 Office 这样的软件中,网格对齐作为默认启用的功能也随处可见。现今的参考线与网格对齐通常有如下几种方式: 不对齐:即可以完全自由地移动、旋转和缩放,不自动对齐或贴合任何辅助线或对象。在 Windows 画图程序里永远就只能处于这种最初级的状态。 网格对齐(Snap to Grids):在 MS Office 中使用绘图功能(比如在 PowerPoint 中插入一个矩形)时,这是默认开启的选项。
2010-06-07 13:11:00
2673
原创 MacBook Pro 上的触控板
触控板(TrackPad)大概是 MacBook Pro 对于 PC 用户来说最酷最具有吸引力的部件了。毫不夸张地说,只要你用 MacBook Pro 上几个小时的网,再回到 PC 的时候你一定很郁闷。 无按钮设计是第一大特色,整块 TrackPad 就是一个大按钮,无论移到哪里都可以直接点击——而且是真的可以按下去的按钮,而不只是装模作样地敲一下面板(当然它也可以支持 tap)。要右键么?你就在右下角点一下就好了,或者,双指单击也行。 关于多点触摸手势不多说了,双指滚屏、双指开合缩放旋转、三指前进后退
2010-05-31 16:25:00
3146
原创 左行右立
“左行右立”乘坐自动扶梯时的一种文明礼仪,即乘客应当一律站立在右侧,将左侧通道空出,留给赶时间的人行走。我第一次接触到这个概念,是在 2001 年去澳大利亚的时候,领队提醒我们,乘自动扶梯的时候千万别像在国内似的,一群人把整个通道都堵满,而应当一律靠右站,把左侧的通道空出来,这样后面有急事的人就可以先走上去。 近些年来,上海、北京等越来越多的城市开始宣传“左行右立”的自动扶梯文明礼仪。大概是和国
2010-05-23 23:38:00
1403
原创 “本架客机出现了一些故障,正在维修……”
这大概是我这么多次飞行旅途中听到的最让人丧气的话,好在听到这句话的时候,我们还在地面上。 这是上上周日,我搭中国航空的航班从上海前往北京。登机后,飞机迟迟没有移动。一段时间之后,我从广播里听到了史上最不 UX 的一句通知:“本架客机出现了一些故障,正在维修……”一时之间,乘客纷纷交头接耳。虽然整天说飞机的安全系数是最高的,但大部分人还是对飞行存在恐惧,尤其是——如何能让飞机带病飞行?也不知道究竟
2010-04-28 23:29:00
1059
原创 新版 MSN.com 网站
之前已经看到过 MSN.com 在搞新版 UI 公测,最近在朋友的提醒下发现新 UI 已经全面上线了。 我的基本感觉还是和当时第一眼看到新版 UI 时一样,好坏两个方面: 好的是总体清新程度进一步增加,相比原来永远处于夜间版的 MSN 网站来说,这一版看起来让人舒服了不少,没有了浓重的颜色装饰,而且所有的页面元素都简单到了只用 CSS 即可搞定的程度,除了一头一尾的 logo 以外完全不
2010-03-30 11:22:00
966
原创 用户体验是一种态度
近些年来,用户体验(User Experience,UX/UE)被提及得越来越频繁,无论是软件、IT 还是任何其他行业都开始日益重视用户体验,例如:成立专门的用户体验部门/小组新增与用户体验相关的专职设计师、工程师甚至高层管理人员引入与用户体验相关的新开发设计流程用户体验以需求或主要评价指标的形式单独出现这场用户体验革命的浪潮让几乎所有人都意识到了重视用户体验的意
2009-05-26 12:32:00
1317
原创 我的 Labs 子站和一些旧实验
之前提到过我在家里拿笔记本充当了服务器,那只是一半,现在要说的是另一半:这个服务器上所运行的网站是 http://labs.richardbao.com/其实并没有多少东西可放,但我也不喜欢看它永远是正在建设中的状态,于是我收拾了一些旧的东西开始堆在上面。Windows Live 身份验证集成,这个是去年在北京的时候做的。功能在于在网站中集成 Windows Live ID 的身份验证,并在得到用
2009-02-28 11:43:00
1073
原创 发现 优快云 的博客在 Chrome 下无法使用
今天无意用 Chrome 打开 优快云 博客,发现只要撰写文章就跳到出错页面,说什么用户可能被锁定云云,后来才发现,原来是浏览器问题,换用 FF 就一切正常了。
2009-02-28 11:34:00
717
原创 [50.0%] 纪念
这似乎是做这件事一年多来我第一次公开写 blog 提到它。很多朋友一天天地看着我 MSN/QQ 的签名栏里方括号内的数字一点一点增长。今天,它到了 50% 之时,我决定纪念一下。2007 年底,大概是 11 月,我看到了微软发布的 Windows Vista UX Guidelines。那个时候它还是“预发布版本”——令人寒的是,至今仍然还是。我曾试图联系过获取它的翻译版权,第一个人和我联系的人一
2009-02-08 20:10:00
642
原创 在家里架 WWW/FTP 服务
这是很多人 N 年前就干过的事情,我一直没有尝试,因为没有那么一台可以整天放在家里并保持连接的电脑。但是事情在最近发生了变化。一来我自己的那台 SONY 笔记本已经休息了很久了;二来觉得为了做点小实验而去租用各式各样的主机空间实在有点浪费。那台电脑闲着也是闲着,废物利用一下更好。于是开始搭建,主要是碰到一些令人哭笑不得的小问题,所以写在这里。基本的方式就是花生壳 + ADSL 路由器端口转发。We
2009-02-06 22:57:00
7107
原创 对于人生目标的一点感悟
首先,我并不是要说我的人生目标,而是经过这么些年,加上最近两年和不同的人打交道,我突然对人生目标对人的影响有了一些感悟。回想我最早有“目标”这个概念,应该是从小学开始了。不过那个时候的“目标”是和“学习”捆绑在一起的。从老师到家长总是会说,要“端正学习态度,明确学习目标”。然而我相信有很多人和我一样,始终对于那个学习目标没有明确过。貌似只是为了在考试之后,家庭气氛更加和谐一些。随着年龄的增长,“目
2009-01-31 12:22:00
2117
1
原创 微软自己的 UX Bugs (2): Windows 中的网络阻止确认信息
从 Windows XP 起,Windows 防火墙会默认阻止所有的程序进行网络连接,当程序第一次试图访问网络时,系统会弹出下面的对话框,让用户进行选择: 这三个按钮在对应的中文版中称为“保持阻止”、“解除阻止”、“稍后提示我”。从字面上来说,它好像应该表示: 保持阻止:阻止这个程序对网络的访问,用户无法正常使用 解除阻止:允许这个程序对网络的访问,用户可
2009-01-31 12:19:00
763
原创 微软自己的 UX Bugs (1): Live Messenger 2009 中的添加联系人
看微软的 UX Guidelines 也看了六七年了,其实仔细留心就发现,微软经常干一些“搬起石头砸自己的脚”的事情。我打算把自己平日里发现的微软的 UX Bugs 写出来,从这篇 Blog 开始。 开篇要说的是最新的 Windows Live Messenger 2009 BETA 中添加联系人的向导。 软件:Windows Live Messenger 版本:2009 BE
2009-01-31 12:16:00
771
原创 再说一个 UX 故事:新谱子,旧谱子
讲一个我自己的故事。我刚到乐团的时候,乐团所有的谱子都是手抄的,纸张大小不一,字迹也各不相同,有些乐谱经过了太多次的复印,已经连五线谱的线都看不清了,于是大家再各自描好。我乐于把自己的分谱重新打印一份,看着清爽(当时同在贝司声部的姐妹们也沾了不少的光)。后来,乐团有些谱子一时难以搞到,我帮着打印了不少分谱,这样一来,每个人的谱袋子里都混杂着新谱子和旧谱子——看着大家可以用整齐漂亮的新谱子,我很高兴
2009-01-31 12:14:00
827
原创 我的音乐生活
(本文系公司 HR 要求为招聘宣传网页而作。) 说起音乐,我接触得算是很早了,即便是正式拜师学琴,也才4岁。父母总说那是我自己的兴趣所在,但那几年给我留下的记忆总是充满着打骂。父亲回忆说:那是我们家庭气氛最紧张的几年。然而,就在10岁那年,偶然听到了贝多芬的《月光》,那种从未感受过的钢琴的表现力给了我极大的震撼。从此,我与音乐结下了不解之缘。可以毫不夸张地说,这足以改变我的一生。
2009-01-31 12:10:00
789
原创 地铁里的伪 UX
当 UX 越来越被人们重视的时候,UX 也就成了越来越多的人打着的旗号——做着的却是不 UX 的事情。任何一个新技术或者新概念诞生的时候都是如此。看看下面这张照片: 这是在北京地铁 5 号线上手机拍摄的,我没注意其他新的线路如何,但 5号线各项设施上布满了盲文,比如这里的扶手。我且不说有没有必要在所有人都认为是扶手的柱子旁边写上“扶手”两个大字,单就这块铁牌的位置,盲人
2009-01-31 11:58:00
1171
原创 Alpha 混合:两个半透明色的叠加
讲 Alpha 混合的文章太多了,我并不是要说有什么新的更好的算法,而是这些 Alpha 混合的文章都是基于一种特定的现实应用:在背景色上叠加一个半透明色。而 OpenPainter 的需求更具一般性:混合两个半透明颜色。也就是说,原始色也是有透明度的。 为此我首先用 PS 做了不少试验,试图推导出 Alpha 混合的公式。事实上,一些简单的实验外加一些逻辑推理,成功了找到了 Alpha 混合的
2008-07-21 01:01:00
12939
2
原创 鼠标和键盘的事件捕获增强
鼠标事件一直保持在传统的 Click、DblClick、MouseUp、MouseDown、MouseMove 这几种之上,多年来并没有多少改进。而 Drag/Drop 事件对应的是数据的传递,而非鼠标的操作。因此,对于像 OpenPainter 这样富于鼠标、键盘操作的程序来说,对鼠标键盘的事件捕获进行增强是非常有必要的。 在 OpenPainter 中,我使用了一个名为 AdvancedMo
2008-07-20 12:25:00
967
原创 OpenPainter 的画布缩放绘图
缩放本来是一件很简单的事情,GDI+ 本身就支持很好的位图缩放。但是牵扯到其他一堆功能的时候,缩放就不再是自己一个位图的事情了。先说简单的,绘图本身吧,PS 的画布缩放是不进行插值的,也就是 GDI+ 里最快的 NearestNeighbor 算法。但是,它绘出来并不是我实际想要的东西,由于它是取最近点值,所以与坐标位置会有半个像素的差距。请看下图: 左图是期望产生的结果,而右图
2008-07-20 11:04:00
1348
原创 OpenPainter 搬家正式通告
这是马后炮了,已经搬了两周时间了。原因是于 SourceForge 在国内的客观不稳定性,为求生存,搬至 Microsoft CodePlex。 相比而言,CodePlex 速度也快不到哪里去,但它是 Microsoft 旗下,对 .NET 来说可以算是找到了组织。Microsoft 的各种官方网站上(MSDN、ASP.net)也会列出相关的 Top Project 列表,非常适合推广。 其地
2008-07-11 08:56:00
637
原创 PS 研究:标尺
说实话,以前一直没觉得 PS 的标尺有什么复杂的,不过就是按比例显示一些刻度罢了。但这次仔细一看,才发现即使是一根小小的标尺,也包含了大量的人性化设置。在不同的比例及长度单位下,应当标哪些刻度的值、每两个标注值之间划分多少个大格、小格、刻度等等。 一开始我以为它只是简单的比例换算,但后来发现并不是这样,比如在 Pixel 单位模式下,100% 比例时,50 的倍数值会显示出来,然后每 10 个像
2008-06-29 16:34:00
2882
原创 OpenPainter 微小调整暨 PS 的画布
不是说 Open Source 就不能那么开发,而是实在是客观限制。一方面平时可用的时间非常少,一方面工程总量大得不着边际。从培养兴趣和维持成就感的角度出发,我决定改变开发模式,一点一点做大。 这样一来,UI 组件就也得同步开发,而不光是内核。首先是显示图像文档的这个基本组件,因为其他一切操作都基于它。这一阶段,我希望实现的功能是: 显示给定的图像文件 可以更改显示百分比
2008-06-26 08:45:00
639
原创 功能列表基本完成
到今天为止,功能列表的重要性划分工作已经基本完成。虽然很多条目还有待进一步整理和归纳,但已经足以将主要工作向下一阶段前进。 根据之前拟定的日程计划,从二月初至四月初,主要工作将是架构设计与文档撰写。虽然功能列表中仅有一部分功能被划入第一版本,但为了便于升级与维护,进行架构设计时,将充分考虑第一版本之外的所有功能,尽可能地将其纳入架构体系——虽然在之前的版本中仅仅会是一个 placeholder,或
2008-02-03 23:27:00
661
原创 钢琴、大雪
今天把钢琴还给雅男了,从她那里借了整整半年。当时只是为了出访前可以有个琴练,但想想反正雅男半年也不在上海,就和她说了等到了寒假再还。现在,到了。过年回来再研究琴的事吧,或租或买,或新或二手(我顿时想起了在 Leipzig 市中心东侧的那个被我视为地标之一的 First Class, Second Hand 店)。反正没琴的日子我是基本过不了的。 说今天是 N 年以来最大的雪了。是不是 N 年以来最
2008-01-26 20:41:00
606
原创 开始进入功能整理的第二阶段
前些时候,对 Photoshop 的功能列举工作已经告一段落。随即进行的是对这些功能点进行归类、整理、合并,以便于对实现的优先级与项目的进程进行控制,同时也为下一阶段的架构设计打好基础。 虽然列举与整理已有软件的功能并不是什么技术活,但是还是让人非常疲倦。为了方便,功能列举的文档只是采用带缩进的纯文本格式,却已经近 2000 行。2000 行的跨度对于功能整理来说,根本无法进行,我不得不采用 XM
2008-01-20 10:42:00
562
原创 图像处理库的根基解决了
鄙视我吧……其实是自己把问题搞复杂了。当我真的用第一次想到的办法进行实际编码试验的时候,发现它其实挺好使的……其实所有的颜色模式只有那么有限的很少几种,全部枚举出来就可以了,然后用抽象工厂去实现它就好了……具体类要重写的部分其实也不多,而那些部分以前一直希望可以抽象出来通用处理,其实还不如一个一个重写来得简单高效。 随即简单实现了一个画直线的方法,把基本的部分调试成功,并且性能良好,进一步证明了这
2008-01-02 22:40:00
619
原创 买了两本书
这次回南京,已经计划好要挑一本图形学的书。我对上海书店里的计算机书分布位置不熟,像这种冷门书实在不太好找,南京的书店毕竟看了十来年了,我也知道图形学的书会放在哪里。昨天早上到书店,我找了一本用类 C 伪代码描述算法的、对基本 2D 绘图和颜色都讲得比较细的书。回头当参考书慢慢看吧。 另外一本是计划外的,《设计模式》。之前不记得是谁对我说了一句:你怎么连设计模式都不知道。这个词我当然是很熟了,但具体
2008-01-01 20:14:00
600
原创 关于色彩模型的最新成果
已经有一个多星期没有写开发日志了,不过这并不表示没有任何进展,相反,在这一周中,色彩模型已经经历了几次重大的变化。 首先,考虑下面几个基本的问题: 索引应当是一种存储格式,而不是颜色模式。 每个颜色数据还应带有一个 Alpha 值。 只有 Lab 颜色(甚至可以采用 32 位)是绝对的,其它的颜色都不能独立存在,而需要色彩管理文件。 下面来慢慢讨论: 之前混淆了颜色与像素的概念,导致一直将索引模
2007-12-27 23:52:00
652
原创 颜色类型的关系
既然我们打算未来要支持那么多种颜色模式,那么用于表示颜色的也不可能像 GDI+ 那样一个单单的存储 8 位 ARGB 颜色的 Color 类型。很自然会想到,以 Color 类型为基类,派生出 RGB、CMYK、Lab 等各种具体的颜色模式。Color 类自身只需要维持一个用于保存实际颜色数据的字节数组的引用即可——它具体可以由各派生类来创建,因为不同的颜色模式和位数所需要的数据块长度不同。然后各
2007-12-20 22:49:00
1390
3
原创 关于颜色模型的考虑
在整理功能时,突然意识到了 GDI+ 的一个重大限制:它仅仅支持 RGB 颜色模型。而平面绘图软件,至少应当是支持 RGB 和 CMYK 色彩空间的,GDI+ 由于仅仅用于屏幕绘图,仅需要与显示设备打交道,此根本没有考虑过 RGB 之外的色彩模型。这对于我们的 OpenPainter 来说,是一个很大的限制。Photoshop 支持位图、灰度、RGB、CMYK、HSB、Lab、多通道及索引模式
2007-12-19 19:45:00
1130
1
原创 OpenPainter 进度(Dec. 15)
首先,OpenPainter 仍在按照预想的计划进行着。因为按照规划,还需要相当长的一段时间才会有阶段性的成果,所以先发一篇解释一下进度。初步的时间点是这样的:首先是详细研究 Photoshop 的所有功能点,我们将会基于 Photoshop CS3 版进行详细的功能罗列与整理,以及一些基本功能的技术尝试,这个时段将从立项起一直持续约两个月。紧接着,我们会从所有的功能点中圈出将在第一版中实现的
2007-12-16 10:07:00
637
原创 SourceForge.NET 上已立项 (2007/12/8 13:06)
昨天晚上看到在 SourceForge.NET 上的 OpenPainter 立项申请已经获批。因为公司一直是在用 CVS,自己对 Subversion 没什么了解,工具也不习惯。不过捣鼓了一会儿,现在已经基本明白了。项目有了名字,也有了可共享同步的服务器,可以开工了。在 SourceForge 上做比较正规些,也容易和世界各地的人交流。麻烦就是,为了无障碍交流,回到家还得继续写 Englis
2007-12-16 10:02:00
929
2
原创 名字就叫 OpenPainter 吧 (2007/12/6 20:21)
起名字确实是很麻烦的事情,因为它需要满足至少以下三点: 英文名字易认易记 英文单词对于中国人来说认知率比较高……怎么说也得属于四级词汇里的吧…… 主要的域名未被注册 昨天想了一晚上头痛得要死,倒是今天早上突然想到 Open 系列,一查,居然所有叫 openpainter 的域名都是开放的。经 Steve 和 Jordan 首肯,决定就这么叫着了。回
2007-12-16 09:59:00
737
原创 启动生平一个开源软件
其实最初的动力来自于在公司没有 Photoshop 可用,导火索是 Microsoft 扶持的那个免费开源的 Paint.NET 可用性实在差到无法忍受。其实很早之前就想过自己做一个玩玩,但是一直只是个想法罢了,今天无意中和同事们一说,却得到了积极的回应。自己一个人做也许无聊,但有一帮热心的人一起动手就不同了。于是,从今天(2007/12/5)开始,一个类似 Photoshop 的开源象素绘图软件
2007-12-16 09:55:00
789
翻译 [1.2.1.2] 直接操纵的概念
h1.my { font: 22pt 黑体; font-weight: normal; } h2.my { font: 22pt 黑体; font-weight: normal; } h3.my { font: 16pt 黑体; font-weight: normal; } h4.my { font: 13p
2006-12-13 22:37:00
5202
翻译 [1.2.1.1] 图形的流行
h1.my { font: 22pt 黑体; font-weight: normal; } h2.my { font: 22pt 黑体; font-weight: normal; } h3.my { font: 16pt 黑体; font-weight: normal; } h4.my { font: 13p
2006-12-13 22:27:00
1376
翻译 [1.2.1] 图形用户界面
h1.my { font: 22pt 黑体; font-weight: normal; } h2.my { font: 22pt 黑体; font-weight: normal; } h3.my { font: 16pt 黑体; font-weight: normal; } h4.my { font: 13p
2006-12-13 22:23:00
1608
翻译 [1.2] 第二章 图形及Web用户界面的特点
h1.my { font: 22pt 黑体; font-weight: normal; } h2.my { font: 22pt 黑体; font-weight: normal; } h3.my { font: 16pt 黑体; font-weight: normal; } h4.my { font: 13p
2006-12-13 22:21:00
3411
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人