想让图片在TImage内移动,而且平滑,无刷屏感觉
解决方案 »
- DBGridEh问题
- RAD Studio 2007 11.0.2804.9245 Architect (整合Update3) 下载
- 600分求解!!delphi7开发ISAPI网络服务器端程序时的UTF8问题, 内附源码
- 关于第三方控件的安装
- 我想捕捉windows程序关闭实件,该用api的什么函数?
- 请问调用一个外部程序,怎么检查它是否启动完毕呢?
- dbgrid中的一个单元格只让输入11个字符,是怎么做的?高手指点!急!
- 看完了d5开发人员指南的第一部分,接下去是通篇阅读呢还是有选择性的看?!!
- whitehare(小白免)在嗎???
- !!!!!!打印问题:50分给最佳方案
- 两个窗口如何传递?
- 你进来了吗?
研究TImage呢?
unit MainFrm; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls; type
TForm1 = class(TForm)
Image1: TImage;
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
FBitmap: TBitmap;
FDownFlag: Boolean;
FLastPoint: TPoint;
FDrawPos: TPoint;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end; var
Form1: TForm1; implementation {$R *.dfm} { TForm1 } constructor TForm1.Create(AOwner: TComponent);
begin
inherited;
FBitmap := TBitmap.Create;
FBitmap.LoadFromFile('About.bmp');
Image1.Picture.Graphic := FBitmap;
DoubleBuffered := True;
end; destructor TForm1.Destroy;
begin
FBitmap.Free;
inherited;
end; procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FDownFlag := True;
FLastPoint := Point(X, Y);
end; procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
dx, dy: Integer;
begin
if FDownFlag then
begin
dx := X - FLastPoint.X;
dy := Y - FLastPoint.Y;
Inc(FDrawPos.X, dx);
Inc(FDrawPos.Y, dy);
Image1.Picture.Graphic := nil;
Image1.Canvas.Draw(FDrawPos.X, FDrawPos.Y, FBitmap);
FLastPoint := Point(X, Y);
end;
end; procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FDownFlag := False;
end; end.