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

Delphi图像处理

    CSDN论坛中,经常看到有关截屏的贴。所谓截屏,指的是获取屏幕,或者屏幕上某个窗口上的信息,并将其转换为图像的操作。为此,也写了几个Windows下的“截屏”函数:
过程定义:
// 获取Canvas有效区域内的图像数据。必须用FreeImageData释放数据结构
// 应调用ImageEmpty检查返回数据结构是否空
function GetImageData(Canvas: TCanvas): TImageData; overload;
// 获取窗口有效区域内的图像数据。必须用FreeImageData释放数据结构
// 应调用ImageEmpty检查返回数据结构是否空
function GetImageData(Handle: HWnd): TImageData; overload;
// 获取TGpGraphics对象有效区域内的图像数据。必须用FreeImageData释放数据结构
// 应调用ImageEmpty检查返回数据结构是否空
function GetImageData(g: TGpGraphics): TImageData; overload;
实现代码:
procedure FillAlpha(Data: TImageData);
asm
mov edx, [eax].TImageData.Scan0
mov ecx, [eax].TImageData.Width
imul ecx, [eax].TImageData.Height
mov eax, 0ff000000h
@PixelLoop:
or [edx], eax
add edx, 4
loop @PixelLoop
end;
function GetHBitmapData(DC: HDC; Bitmap: HBitmap; PixelBits: Integer): TImageData;
var
bmi: TBitmapInfo;
begin
Result := GetImageData(1, 1, 0, nil, 0);
bmi.bmiHeader := GetBitmapInfoHeader(Result);
if GetDIBits(DC, Bitmap, 0, 1, nil, bmi, DIB_RGB_COLORS) = 0 then
raise EImageDataError.Create(EIDErrorParam);
Result := GetImageData(bmi.bmiHeader.biWidth, bmi.bmiHeader.biHeight, PixelBits);
Result.InvertLine := True;
bmi.bmiHeader := GetBitmapInfoHeader(Result);
if GetDIBits(DC, Bitmap, 0, Result.Height, Result.Scan0, bmi, DIB_RGB_COLORS) = 0 then
begin
FreeImageData(Result);
raise EImageDataError.Create(EIDErrorNotSupport);
end;
end;
function GetImageDatafromDC(DC: HDC): TImageData;
var
r: TRect;
saveBitmap, Bitmap: HBITMAP;
memDC: HDC;
begin
FillChar(Result, Sizeof(TImageData), 0);
GetClipBox(DC, r);
if IsRectEmpty(r) then Exit;
Dec(r.Right, r.Left);
Dec(r.Botto


相关文档:

知识小结(Delphi)

1) Error loading midas.dll     没有注册midas.dll 运行RegSver32.exe midas.dll
2)Result := GetProcAddress(FGDIPlusLibrary, PChar(ProcName));编译 出现这样的问题,应该是设置方面的问题,Project->Options->Complier->Hugestrings 钩上就ok了!
3) TCheckListBox有个itemEnable ......

delphi之模拟点击网页中的按钮

unit Unit1;   
  
interface  
  
uses  
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   
   Dialogs, StdCtrls, OleCtrls, SHDocVw;   
  
t ......

WebBrowser组件和MSHTML 在Delphi中的使用

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

总结一下delphi中SQL语句中引号

总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法以及SQL语句中日期格式的表示(#)、('')
在Delphi中进行字符变量连接相加时单引号用('''),又引号用('''')表示
首先定义变量
var
AnInt:integer=123;//为了方便在此都给它们赋初值。虽然可能在引赋初值在某些情况下不对
AnIntStr:string='456'; ......

delphi学习

 1.[Error] DCansactionIformationManagement.pas(171): String literals may have at most 255 elements
[Fatal Error] DCMain.pas(32): Could not compile used unit 'DCansactionIformationManagement.pas'
报错:‘不正常定义了参数。提供了不一致或不完整信息’
解决方法:语法
数据定义要一致
2. ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号