易截截图软件、单文件、免安装、纯绿色、仅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


相关文档:

用delphi吧一个word文档追加到另外一个word文档中

uses ComObj;
var WordApp: Variant;
begin
WordApp := CreateOleObject('Word.Application');
WordApp.Documents.open('c:\1.doc');
WordApp.Selection.InsertFile('c:\2.doc','',False,false,false);
WordApp.Selection.InsertFile('c:\3.doc','',False,false,false);
WordApp.ActiveDocument.SaveAs('C:\4.doc' ......

delphi中Webbrowser问题收集

 delphi中Webbrowser问题收集
获得网页中变量值     htm中<script> var currID=123</script>     程序中可以这么调用 id := Form1.WebBrowser1.OleObject.Document.script.currID     值得说明的是,变量可以是javascript定义的,也可以是vbs ......

Delphi图像处理

    图像旋转,是指按照给定的角度,计算出图像每个像素坐标点在新图像上的坐标位置,从而实现整个图像坐标变换的图像处理手段。其像素坐标的变换公式为:
    (1)、x' = x * cos(angle) + y * sin(andle)
            y' = ......

Delphi 中DLL的调用技巧

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

悟透delphi 第三章 多线程

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