向上帝打申请了,下辈子再也不做程序员!! 上帝批复:OK!

捕捉全屏图像 、把文字输出到屏幕

捕捉全屏图像

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//捕捉全屏幕图像并保存到: c:\temp\Screen.bmp
procedure TForm1.Button1Click(Sender: TObject);
var
  bit: TBitmap;
  cvs: TCanvas;
begin
  bit := TBitmap.Create;
  bit.SetSize(Screen.Width, Screen.Height);

  cvs := TCanvas.Create;
  cvs.Handle := GetDC(0);

  bit.Canvas.CopyRect(Screen.DesktopRect, cvs, Screen.DesktopRect);
  bit.SaveToFile('c:\temp\Screen.bmp');

  cvs.Free;
  bit.Free;
end;

end.
 把文字输出到屏幕

本例效果图:


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//把文字输出到屏幕
procedure TForm1.Button1Click(Sender: TObject);
var
  cvs: TCanvas;
  Rect: TRect;
  Str: string;
begin
  cvs := TCanvas.Create;
  cvs.Handle := GetDC(0);
  SetBkMode(cvs.Handle, TRANSPARENT);
  //cvs.Font.Name := '宋体';
  cvs.Font.Style := [fsBold, fsItalic];
  cvs.Font.Size := 48;
  Randomize;
  cvs.Font.Color := Random($FFFFFF);
  Rect := Screen.DesktopRect;
  Str := '万一的 Delphi 博客';
  cvs.TextRect(Rect, Str, [tfSingleLine, tfCenter, tfVerticalCenter]);
  cvs.Free;
end;

//刷新显示
procedure TForm1.Button2Click(Sender: TObject);
begin
  InvalidateRect(0, nil, False);
end;

end.
posted @ 2009-03-17 17:15  zywuhao  Views(279)  Comments(0)    收藏  举报