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

Delphi图像处理

    本文是基于《GDI+在Delphi程序的应用 – Photoshop色相/饱和度/明度功能》一文的BASM实用性过程,有关实现原理可参见《GDI+ 在Delphi程序的应用 -- 图像饱和度调整》和《GDI+ 在Delphi程序的应用 -- 仿Photoshop的明度调整》,纯PAS实现代码和测试例子代码见《GDI+在Delphi程序的应用 – Photoshop色相/饱和度/明度功能》。
过程定义:
// 调整色相/饱和度/明度
procedure ImageHSBAdjustment(Data: TImageData; hValue, sValue, bValue: Integer);
实现代码:
procedure _SetBrightness(Data: TImageData; Value: Integer);
asm
push esi
push edi
push ebx
sar edx, 1 // Value /= 2
movd mm5, edx
punpcklwd mm5, mm5
punpcklwd mm5, mm5
pcmpeqb mm6, mm6
psrlw mm6, 8 // mm4 = 00 FF 00 FF 00 FF 00 FF
pxor mm7, mm7
push edx
call SetDataReg32
pop esi
@yLoop:
push ecx
@xLoop:
mov al, [edi + 3]
movd mm0, [edi]
punpcklbw mm0, mm7
movq mm1, mm0
test esi, esi
js @@1 // if (Value >= 0)
pxor mm0, mm6 // rgb = rgb + (255 - eax) * Value / 128
@@1:
pmullw mm0, mm5 // else
psraw mm0, 7 // rgb = rgb + eax * Value / 128
paddsw mm0, mm1
packuswb mm0, mm7
movd [edi], mm0
mov [edi + 3], al
add edi, 4
loop @xLoop
pop ecx
add edi, ebx
dec edx
jnz @yLoop
emms
pop ebx
pop edi
pop esi
end;
procedure _HueAndSaturation(Data: TImageData; hValue, sValue: Integer);
var
Width, Height, dstOffset: Integer;
S, delta: Integer;
hv, sv: Integer;
asm
push esi
push edi
push ebx
mov hv, edx
mov sv, ecx
call SetDataReg32
mov Width, ecx
mov Height, edx
mov dstOffset, ebx
cld
@yLoop:
push Width
@xLoop:
dec Width
js @@13
movzx ecx, [edi


相关文档:

Delphi图像处理

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

Delphi中控件的动态创建

 网上搜集资料 参考写的代码 实现控件的动态创建 完整代码如下:
 (实现界面)
-------------------
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls;
type
  TControlClass =class ......

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 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号