可有什么方法能将图象显示并随意放大和缩小?(50分)

  • 主题发起人 主题发起人 chenliyan163
  • 开始时间 开始时间
C

chenliyan163

Unregistered / Unconfirmed
GUEST, unregistred user!
我的意思是能否象PHOTOSHOP那样实现将本窗口的图象进行1:2;1:3;2:1;3:1等的
任意缩放.
 
我实现了放大镜的功能。
unit Unit1;

interface

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

type
TForm1 = class(TForm)
ForeImage: TImage;
BackImage: TImage;
procedure FormCreate(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure ForeImageMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
procedure ImageCopy(BoxCenterX, BoxCenterY, BoxSide: Integer);
{ Private declarations }
public
{ Public declarations }
end;
const

sSide=30;

dSide=45;


var
Form1: TForm1;
msHide: Boolean;

OldX, OldY, NewX, NewY: Integer;

DestRect, SourceRect : TRect;



implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
msHide:= True;

Canvas.CopyMode:=cmSrcCopy;


end;
procedure Tform1.ImageCopy(BoxCenterX, BoxCenterY, BoxSide: Integer);

begin

with SourceRect do

begin

Left:=BoxCenterX-BoxSide;

Top:=BoxCenterY-BoxSide;

Right:=BoxCenterX+BoxSide;

Bottom:=BoxCenterY+BoxSide;

end;

with DestRect do

begin

Left:=BoxCenterX-dSide;

Top:=BoxCenterY-dSide;

Right:=BoxCenterX+dSide;

Bottom:=BoxCenterY+dSide;

end;

ForeImage.Canvas.CopyRect(DestRect, BackImage.Canvas, SourceRect);

end;


procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if not msHide then

begin

msHide:=True;

ShowCursor(True);

ImageCopy(OldX, OldY, dSide);

end;

end;

procedure TForm1.ForeImageMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
NewX:=X;

NewY:=Y;

if msHide then

begin

OldX:=NewX;

OldY:=NewY;

msHide:=False;

ShowCursor(False);

end else

begin

ImageCopy(OldX, OldY, dSide);

end;

ImageCopy(NewX, NewY, sSide);

OldX:=NewX;

OldY:=NewY;


end;

end.
 
楼上的大哥,真地很感谢您,这么快给我了回答,我做了一下,的确是一个不错的局部放大
可是这个不是我想要的效果,我要的是一个整个图像的放大,而且当图像大于某一个值(768*576)大小时就进行图像的漫游
 
你可以用一个scrollbox控件把image放在scrollbox里剩下的你想怎样放大都可以
代码你可以自己想,如果不会再说,我发代码
 
要实现photoshop的hand漫游功能还要写mouse事件代码。
 
小詹:
您的意思是放大图像是指,(将image放在scrollbox),将image的stretch改成true,然后改变长和宽?
 
多人接受答案了。
 
后退
顶部