2007年07月20日
在PhotoShop的颜色设置对话框中,会发现“Dot Gain”这个词语经常出现,如在“颜色设置”对话框中的“灰色”与“专色”,与“自定 CMYK”对框中的“网点增大”。尤其是在“灰色”与“专色”的下拉列表中,除了预定的几种外,还提供“自定网点补正”、“自定灰度系数”这两项功能,所以我怀疑灰度系数与网点增大有关。阅读全文>
发表于 @ 2007年07月20日 13:15:00|评论(loading...)|编辑|举报|收藏
2006年12月27日
让图片在浏览器中只有被选中后才能看清阅读全文>
发表于 @ 2006年12月27日 15:19:00|评论(loading...)|编辑|举报|收藏
2006年12月15日
超光速旅行中的时间倒流现象,只是因为光速这种信息传递速度过慢。阅读全文>
发表于 @ 2006年12月15日 10:34:00|评论(loading...)|编辑|举报|收藏
2006年11月30日
对于存储16色(4位)图像,VGA使用的是位平面方式,而DIB采用的是线性方式。无论用哪一种方式,在访问单一像素时,都需要进行复杂的位拆分运算,导致在该色彩模式下很难高效的编程。特别是这两种颜色模式之间的转换,需要极其复杂的位级拆分/重排操作,非常难以高效实现。本文就是专门讨论高效的16色转换算法的。阅读全文>
发表于 @ 2006年11月30日 19:31:00|评论(loading...)|编辑|举报|收藏
2006年11月23日
经过上一次的测试后,发现读显存的速度比写显存的速度慢得多。
很多资料建议我们使用写模式1来实现显存内的位图传送。当使用写模式1进行位图传送时,是一边读一边写的形式。而现在内存读速度很慢,那么会不会影响位图传送速度呢?于是我做了个测试。
阅读全文>
发表于 @ 2006年11月23日 23:25:00|评论(loading...)|编辑|举报|收藏
2006年11月21日
论坛贴图专用阅读全文>
发表于 @ 2006年11月21日 13:04:00|评论(loading...)|编辑|举报|收藏
2006年11月14日
DOS下直接写屏的代码写过不少了,但一直没有想过一个问题——操作VGA的速度有多块。因此,我写了个小程序来测试VGA的速度。图形模式:VGA 12h,640*480*16色。
阅读全文>
发表于 @ 2006年11月14日 22:49:00|评论(loading...)|编辑|举报|收藏
这个程序用于获取VBE(VESA BIOS EXTENSION)信息,对编写SVGA程序很有帮助,还可用来检测显卡性能。阅读全文>
发表于 @ 2006年11月14日 22:44:00|评论(loading...)|编辑|举报|收藏
2006年11月05日
有一个只用4行代码就实现的计算Pi的程序,被称为外星人计算Pi的程序。
有许多人讨论分析了该程序的实现原理,如:http://blog.csdn.net/panqiaomu/archive/2006/05/07/711776.aspx
但我总感觉它分析得不够透彻,于是自己分析了一下。
1.将原程序修改成更易看懂的形式;
2.采用同样的算法,用Excel表格将Pi算了出来。
阅读全文>
发表于 @ 2006年11月05日 21:57:00|评论(loading...)|编辑|举报|收藏
2006年11月04日
一种快速的计算Hue色环的算法,整数运算。且支持指定饱和度和亮度,能实现像PhotoShop的HSB拾色区那样的效果。阅读全文>
发表于 @ 2006年11月04日 01:12:00|评论(loading...)|编辑|举报|收藏
2006年10月13日
有时候,我们会碰上这样的多重分支代码:
char szbuf[10];
if (score >= 90) strcpy(szbuf, "优");
elseif (score >= 80) strcpy(szbuf, "良");
elseif (score >= 60) strcpy(szbuf, "及格");
else strcpy(szbuf, "不及格");
这样的代码无疑是很低效的,怎么优化呢?
阅读全文>
发表于 @ 2006年10月13日 11:07:00|评论(loading...)|编辑|举报|收藏
2006年10月11日
在编写图象处理程序时,经常出现RGB值超过[0, 255]范围的情况。这时,得做饱和处理,将越界数值饱和到边界,即这样的代码:
if (r 255) r = 255;
if (g 255) g = 255;
if (b 255) b = 255;
但这样的代码执行效率是很低的。这是因为if区块会编译成跳转指令,而跳转指令对于严重影响现代超流水线CPU的流水线效率。
这时CPU产商提出了两个解决方案:一是增加了分支预测硬件,尽量减少跳转指令对流水线的影响;二是设计了MMX/SSE等SIMD指令集,它们天生就有饱和运算指令,而且还可以并行计算。
分支预测对于循环语句所编译的跳转效果较好,因为在循环时一定会执行跳转,只有最后一次循环结束时才会预测失败。而对于做饱和处理效果就不怎么好了,这是因为每次循环计算出的RGB值都是不相同的(因为本来就不是同一个像素),预测失败的可能性很大。所以分支预测对饱和处理做的贡献微乎其微。
而使用SIMD指令呢。那是一种非常完美的解决方案,在有条件的情况下极力推荐SIMD指令。但由于高级语言无法描述SIMD指令,所阅读全文>
发表于 @ 2006年10月11日 19:19:00|评论(loading...)|编辑|举报|收藏
2006年07月01日
如何在DOS中枚举PCI设备。一、PCI配置空间;二、如何访问配置空间;三、枚举PCI设备;四、PCI BIOS;五、保护模式下的PCI BIOS;六、总结。阅读全文>
发表于 @ 2006年07月01日 01:36:00|评论(loading...)|编辑|举报|收藏
2006年06月28日
1.字母表;2.注音汉字;3.韵母表;4.声调;5.拼音阅读全文>
发表于 @ 2006年06月28日 01:14:00|评论(loading...)|编辑|举报|收藏
2006年06月26日
以前看《操作系统》时,总觉得书上说得太抽象,理解不了。但最近编写一个键盘处理的小程序时,慢慢的理解了操作系统对中断的处理的那些概念。内容:一、中断时只接收数据;二、系统分层;三、内核线程。阅读全文>
发表于 @ 2006年06月26日 21:23:00|评论(loading...)|编辑|举报|收藏
这个程序是我的一个尝试,试图编写一个简单的支持多语言输入的单行文本编辑器。使用的开发工具是VC++6.0,MFC框架能减少许多枯燥的API调用。但即使是这样简单的要求,但我在写这个程序的时候仍然是困难重重。阅读全文>
发表于 @ 2006年06月26日 21:18:00|评论(loading...)|编辑|举报|收藏
2006年06月04日
很多书上说PC机的8253的计时器#0的输出频率是每秒18.2次(每隔55ms触发一次),但都说这个只是约值,精确值有很长一串小数。计算机应该是靠整数运算的,那些小数值应该只是换算成现实时间的结果。所以我想知道精确的频率,于是查找了大量的资料,结果发现都有一点出入:
1.许多书上所说的(计数器#0)精确值:
F: 每秒18.2064819336次
T: 每隔54.925ms。
2.Terrv Dettmann《DOS Programmer's Reference》:
H: 由系统时钟每秒大约调用18.2次(每小时65536次)。
D: int 1Ah的00h功能: 该中断获取系统时钟计数器,该计数器从零点开始,每秒计数18.2065次。从零点(midnight)开始的一整天共需计86400秒,这段时间内的计数次数(时钟计数1573040次,经过的时间为86399.9129秒)。
3.Mazid《汇编语言、设计与接口技术》:8284芯片连接到一个14.31818MHz的晶振源,输出的Clr引脚是(8088中)CPU、内存(系统总线)的主频,1/3分频,4阅读全文>
发表于 @ 2006年06月04日 23:25:00|评论(loading...)|编辑|举报|收藏
GCS常数是什么东西?当你在输入法打开状态时敲键盘,输入法会尝试将你输入的内容转为中文字符(这个过程称为Composition——组字),然后向窗口发送WM_IME_COMPOSITION通知当前的组字状态(lParam参数),然后用户可以通过调用ImmGetCompositionString消息得到详细的组字信息。阅读全文>
发表于 @ 2006年06月04日 23:22:00|评论(loading...)|编辑|举报|收藏
WM_INPUTLANGCHANGE,ImmGetProperty,IGP_GETIMEVERSION,IGP_PROPERTY,IGP_CONVERSION,IGP_SENTENCE,IGP_UI,IGP_SETCOMPSTR,IGP_SELECT阅读全文>
发表于 @ 2006年06月04日 23:19:00|评论(loading...)|编辑|举报|收藏
2006年05月30日
支持UTF文本文件访问的模块支持常见的ANSI、UTF-8、UTF-16LE、UTF-16BE这几种编码文本。阅读全文>
发表于 @ 2006年05月30日 08:43:00|评论(loading...)|编辑|举报|收藏