易截截图软件、单文件、免安装、纯绿色、仅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 string类型转integer时出错的检测

procedure TForm1.Button1Click(Sender: TObject);
Var
  Num: Integer;
Begin
  Try
    Num:=StrToInt(Edit1.Text);
    Edit2.Text:=IntToStr(Num*Num);
  Except
    On EConvertError Do   ShowMessage(Edit1.Text+'无法转成整数!'); ......

Delphi图像处理

    图像缩放是最常用的图像处理,在图像拉伸和取得图像略图中都要用到。图像缩放质量的好坏与图像像素插值方式有关,本文定义了常用的3种插值方式,即临近插值、线性插值和双立方插值方式:
type
// 插值方式: 缺省(线性插值),临近,线性,双立方
TInterpolateMode = (imDefault, imNear, imBiline ......

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

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

delphi中Webbrowser问题收集

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

WebBrowser组件和MSHTML 在Delphi中的使用

 WebBrowser组件和MSHTML 在Delphi中的使用
由于项目需要,近来研究了一下WebBrowser组件和MSHTML 在Delphi中的使用,整理了一下这段时间研究的结果,写下来一是方便大家查阅,二也可以加深我自己的记忆.希望能对大家有所帮助… …,同时,如果有更好的处理方式或者我没有提到的问题,请大家也告诉我哦, 咱们一 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号