易截截图软件、单文件、免安装、纯绿色、仅160KB

Delphi图像处理

    设置图像关键颜色,使图像的某种或某个范围的颜色成为透明色,是图片合成、动画显示中经常用的图像处理手段。下面是实现代码:
过程定义:
// 设置色键(透明范围)。colorLow 低色键值; colorHigh 高色键值
// 当像素A、R、G、B值同时大于等于colorLow和小于等于colorHigh时为透明色
procedure ImageSetColorKey(Data: TImageData; ColorLow, ColorHigh: LongWord);
// 按坐标颜色设置色键。x,y 图像坐标点, Precision 色键容差
procedure ImageSetColorKeyPoint(Data: TImageData; x, y: Integer; Precision: LongWord);
实现代码:
procedure ImageSetColorKey(Data: TImageData; ColorLow, ColorHigh: LongWord);
procedure ColorKeyEQ(Data: TImageData; ColorKey: LongWord);
asm
punpckldq mm2, mm2 // mm2 = ColorKey ColorKey
mov eax, ecx
shr ecx, 1 // 每次比较2个像素
@yLoop:
push ecx
@xLoop:
dec ecx
js @@1
movq mm0, [edi] // mm0 = A1 R1 G1 B1 A0 R0 G0 B0
pcmpeqd mm0, mm2 // 按32位数对2个像素进行比较
pandn mm0, [edi] // 比较结果取非后同原象素值作与运算
movq [edi], mm0 // 存入结果
add edi, 8
jmp @xLoop
@@1:
test eax, 1 // 比较可能存在的最后一个像素
jz @@2
movd mm0, [edi]
pcmpeqd mm0, mm2
movd ecx, mm0
not ecx
and [edi], ecx
add edi, 4
@@2:
pop ecx
add edi, ebx
dec edx
jnz @yLoop
end;
procedure ColorKeyArea(Data: TImageData; ColorLow, ColorHigh: LongWord);
asm
pxor mm7, mm7 // 比较命令是按有符号数进行的,因此
punpcklbw mm2, mm7 // ColorLow按字节扩展为字
punpcklbw mm3, mm7 // ColorHigh按字节扩展为字
@yLoop:
push ecx
@xLoop:
movd mm0, [edi] // mm0 = 00 00 00 00 A R G B
punpcklbw mm0, mm7 // mm0 = 00 A 00 R 00 G 00 B
movq mm1, mm2
pcmpgtw mm1, mm0 // 比较 ColorLow 是否大于 mm0


相关文档:

WebBrowser组件和MSHTML 在Delphi中的使用

 WebBrowser组件和MSHTML 在Delphi中的使用
由于项目需要,近来研究了一下WebBrowser组件和MSHTML 在Delphi中的使用,整理了一下这段时间研究的结果,写下来一是方便大家查阅,二也可以加深我自己的记忆.希望能对大家有所帮助… …,同时,如果有更好的处理方式或者我没有提到的问题,请大家也告诉我哦, 咱们一 ......

Delphi 中DLL的调用技巧

     提起DLL您一定不会陌生,在Windows中有着大量的以DLL为后缀的文件,它们是保证Windows正常运行和维护升级的重要保证。(举个例子,笔者的Win95 System目录下尽有500多个DLL文件。)其实,DLL是一种特殊的可执行文件。说它特殊主要是因为一般它都不能直接运行,需要宿主程序比如*.EXE程序或其他DLL ......

Delphi 给字符指针分配内存


文章来自:http://www.cnblogs.com/del/archive/2009/05/15/archive/2008/11/08/1329543.html
GetMem
AllocMem
ReallocMem
FreeMem
GetMemory
ReallocMemory
FreeMemory
New
Dispose
NewStr
DisposeStr
StrNew
StrAlloc
StrDispose
GlobalAllocPtr
GlobalFreePtr
WideStrAlloc
AnsiStrAlloc
StrDispos ......

悟透delphi 第二章 DELPHI与WIN32时空

第一章  DELPHI的原子世界
第二章  DELPHI与WIN32时空
第三章  多线程
第四章  接口
第五章  包
第六章  事件与消息
第七章  组织你的模块
第八章  探索数据库
第九章  多层体系结构
第十章  操作界面与操作逻辑
第十一章  面向对象数据库基础
第二章&n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号