Skip to content

月份:2010年11月

Delphi下实现全屏快速找图找色

 前言

 

  最近有好几个朋友都在问我找图找色的问题,奇怪?于是乎写了一个专门用于找图找色的单元文件“BitmapData.pas”。在这个单元文件中我实现了从文件中导入位图、屏幕截图、鼠标指针截图、在图片上查找子图、在图片上查找颜色等功能。在查找过程中可以设定颜色变化范围、可以从左到右从上到下查找、也可以从指定点向四周查找。关于这个文件的下载和使用,可以参考本文的第四节。下面详细说说这些功能的实现。

一、数据提取

  位图其实可以看成是一个由象素组成的矩阵,找图找色可以看成是象素值的比对。很多新手在设计这类的程序时喜欢使用TBitmap.Canvas.Pixels属性,这个属性其实是对API函数GetPixel的封装,这个函数执行速度是很慢的,主要用来对位图象素进行偶尔的访问。而比对过程中需要对象素进行频繁的访问,造成程序运行缓慢。另外一种方法是使用TBitmap.ScanLine属性,利用它可以直接访问位图的数据。但是这些数据和当前位图的格式有关,主要是色深方面的问题,不同的色深会有不同格式的数据。另外比对过程中也需要对该属性进行频繁的调用。由于比对过程完全是数据的比较,不需要进行绘制操作。所以可以一次性将位图的数据提取出来放置到一个缓冲区中再进行比对,这样程序的性能会更高,也便于查找算法的实现。这时可以调用API函数GetDIBits获得设备无关位图的RGB数据,其实ScanLine属性也是调用这个函数实现的。GetDIBits函数格式声明如下:

function GetDIBits(

    DC: HDC;         //设备上下文句柄;

    Bitmap: HBitmap; //位图句柄,注意不是TBitmap对象;

    StartScan,       //开始检索的第一条扫描线;

    NumScans: UINT;  //共检索的扫描线数;

    Bits: Pointer;   //数据缓冲区指针;

    var BitInfo: TBitmapInfo; //位图信息结构,此结构确定了设备无关位图的数据格式;

    Usage: UINT      //指定TBitmapInfo结构的bmiColors成员的格式。

    ): Integer; stdcall;

  其中TBitmapInfo结构的格式如下:

Leave a Comment

Firefox 4 Beta 7 速度超越IE9,Chrome 8

  Mozilla 谋智刚刚发布了Firefox 4 Beta 7,第一个整合了新一代Jaegermonkey javascript 引擎的版本。Computerworld 的测试显示: 新版的javascript 速度比当前的稳定版本Firefox 3.6.12 快三倍,目前仅落后于Opera 11 alpha 版,超过了其它三个主要竞争对手。测试中,Firefox 4 Beta 7比IE9 Beta 快25%,是IE8的12倍,比Google Chrome 8 beta 略快。

 

Browser speed test 

 

Leave a Comment

Ubuntu 11.04发布日期确定 开发日程表一览

  Ubuntu 10.10(Maverick Meerkat)发布之后,开发人员就开始关注Ubuntu 11.04(Natty Narwhal)的开发日程。上周,Ubuntu 11.04的开发日程表进行了修改,其正式版的发布日期稍微有了推迟,不过仍然会在2011年4月发布。Ubuntu开发人员决定将原计划的5个Alpha版本减少到3个,之前再发布一个Beta测试版、一个RC候选版,下面来看一下具体日程表:

 

— Alpha 1,2010年12月2日;

— Alpha 2,2011年2月3日;

— Alpha 3,2011年3月3日;

— Beta版,2011年3月31日;

— RC版,2011年4月21日;

— Ubuntu 11.04正式版,2011年4月28日

  关于Ubuntu 11.04的具体功能,当前我们知道的还不多。不过,Ubuntu创始人Mark Shuttleworth在10月下旬召开的Ubuntu开发者峰会上曾宣布,Ubuntu 11.04的默认用户界面将采用Ubuntu 10.10上网本中首次应用的用户界面Unity,取代GNOME Shell。 

Leave a Comment

Mozilla Firefox六岁了

  在2004年11月9日,Firefox 1.0出世了,今天(2010年11月9日)是它六岁的生日。六年前很难想象Firefox能像今日一样无所不在。仅仅六年时间(IE已经有15年的历史 了),Firefox已经成为了世界上最重要的开源项目之一。Firefox为用户提供了更加安全、保密和稳定的互联网浏览体验,通过它不断增长的市场份 额来保证互联网标准化的推广。

  在Firefox之前只有Internet Explorer和Netscape,而这两者又爆发了持久但却没有赢家的拉锯战。Firefox通过“创造一个更好的浏览器来满足用户需求” (build a better browser and they will come)这种完全不同的理念改变了浏览器战争。今天,Firefox拥有约30%的市场份额和比其他浏览器都丰富的特性,这说明他的努力得到了回报。

  如果你有兴趣,可以花一点时间阅读一下Firefox 1.0的发行说明,这将是一段有趣的阅读体验。 

Leave a Comment

Firefox 4 Beta 7 将于美国时间周三发布

  多次推迟之后,Firefox终于确定将在美国时间周三发布 Firefox 4.0 Beta7版本,也就是说今天晚些时候或者明天我们就可以使用该版本。Firefox 4.0 Beta7 最值得关注的是使用了 Jaegermonkey的JavaScript引擎,具体表现如何,我们拭目以待。

  Beta7 是一个重要的版本,因为 Firefox 4.0 的所有新特性将在该版本中完成,接下来的一些版本将不再包含任何新特性,只是对发现的问题进行修正。 更多详情请查看官方消息 

Leave a Comment