相关函数: OffsetViewportOrgEx
本例效果图:
代码文件:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
cvs: TCanvas;
bit: TBitmap;
f: Boolean;
x1,y1: Integer;
procedure TForm1.FormCreate(Sender: TObject);
begin
bit := TBitmap.Create;
bit.LoadFromFile('c:\temp\test.bmp');
cvs := TCanvas.Create;
cvs.Handle := GetDC(Handle);
end;
procedure TForm1.FormPaint(Sender: TObject);
const
str = 'Delphi';
var
x,y: Integer;
begin
{在图片中绘制文本}
bit.Canvas.Font.Size := 24;
bit.Canvas.Font.Style := [fsBold];
bit.Canvas.Font.Color := 0;
bit.Canvas.Brush.Style := bsClear;
x := (bit.Width - bit.Canvas.TextWidth(str)) div 2;
y := (bit.Height - bit.Canvas.TextHeight(str)) div 2 + 32;
bit.Canvas.TextOut(x, y, str);
{在窗体上绘制图片}
x := (ClientWidth - bit.Width) div 2;
y := (ClientHeight - bit.Height) div 2;
cvs.Draw(x, y, bit);
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
f := True;
x1 := X;
y1 := Y;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if f then
begin
OffsetWindowOrgEx(cvs.Handle, -(X-x1), -(Y-y1), nil);
x1 := X;
y1 := Y;
Repaint;
end;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
f := False;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
bit.Free;
cvs.Free;
end;
end.
窗体文件:
object Form1: TForm1
Left = 212
Top = 116
Caption = 'Form1'
ClientHeight = 204
ClientWidth = 262
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poDesigned
OnCreate = FormCreate
OnDestroy = FormDestroy
OnMouseDown = FormMouseDown
OnMouseMove = FormMouseMove
OnMouseUp = FormMouseUp
OnPaint = FormPaint
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 96
Top = 171
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 0
end
end