你首先确定你要放大的区域的宽和高,以点击点作为中心,确定放大区域的宽高,对于image的宽和高不用改变,然后用copyrect进行区域复制。

解决方案 »

  1.   

    非常感谢-万成:
        但我所作的就是通过改就image的宽、高来进行电子放大的。望各位大虾多多帮忙,并列出其算法。谢谢!
      

  2.   

    现作了一个,看是否满意:)设开始时候 FromHeight,FromWidth,FromTop,FromLeft
    缩放后ToHeight,ToWidth,ToTop,ToLeft
    缩放比例Scale
    中心点X,Y(就是鼠标在Image1上的座标)unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        Panel1: TPanel;
        Image1: TImage;
        Edit1: TEdit;
        Button1: TButton;
        procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var
    FromLeft,FromTop,FromWidth,FromHeight: Double;
      ToLeft,ToTop,ToWidth,ToHeight: Double;
      Scale: Double;
      XX,YY: Double;
    begin
    Scale := StrToFloat(Edit1.Text);
      FromLeft := Image1.Left;
      FromTop := Image1.Top;
      FromHeight := Image1.Height;
      FromWidth := Image1.Width;  ToWidth := Scale * FromWidth;
      ToHeight := Scale * FromHeight;  XX := X + FromLeft;
      YY := Y + FromTop;  ToLeft := XX - Scale * X;
      ToTop := YY - Scale * Y;  Image1.Top := Round(ToTop);
      Image1.Left := Round(ToLeft);
      Image1.Width := Round(ToWidth);
      Image1.Height := Round(ToHeight);
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
    Image1.Left := (Panel1.Width - Image1.Width) div 2;
      Image1.Top := (Panel1.Height - Image1.Height) div 2;
    end;end.
      

  3.   

    长宽放大一倍为:
    var
      AxisX,AxisY:Integer;//Image1中心坐标
    begin
      AxisX:=Image1.left+Image1.Width div 2;
      AxisY:=Image1.Top +Image1.Heigth div 2;
      Image1.AutoSize:=False;
      Image1.Width:=Image1.Width+Image1.Width;
      Image1.Heigth:=Image1.Heigth+Image1.Heigth;
      Image1.Left:=AxisX-Image1.Width div 2;
      Image1.Top :=AxisY-Image1.Heigth div 2;
      Image1.Center:=True;
      Image1.Stretch:=True;
    end;//以中心放大!缩小同理哈!