如何在IMAGE上做局部放大(50分)

  • 主题发起人 主题发起人 bluebug
  • 开始时间 开始时间
B

bluebug

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在IMAGE上,将鼠标选择的区域放大
 
另外用一个Image显示放大后的图片应该就可以了。
 
帮顶!

╭=========================================╮

80G海量源代码,控件,书籍全免费狂下不停!

http://www.source520.com

╰=========================================╯
 
关键是如何获取鼠标选择的图形
 
unit main;

interface

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

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

var
MainForm: TMainForm;

implementation
const

sSide=30;

dSide=45;

var

msHide: Boolean;

OldX, OldY, NewX, NewY: Integer;

DestRect, SourceRect : TRect;

{$R *.dfm}

procedure TMainForm.FormCreate(Sender: TObject);
begin
msHide:=True;
Canvas.CopyMode:=cmSrcCopy;
end;

procedure TMainForm.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 TMainForm.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;

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

begin

msHide:=True;

ShowCursor(True);

ImageCopy(OldX, OldY, dSide);

end;

end;

end.
 
接受答案了.
 
后退
顶部