主要功能:一幅图像,要看部分1,就将其它部分用栅格遮挡起来;
想看部分2,再将其它部分遮起来。

解决方案 »

  1.   

    //image1  存储图象。
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        Image1: TImage;
        Image2: TImage;
        Button1: TButton;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      bitmap:Tbitmap;
    begin
      bitmap:=Tbitmap.Create;
      try
      bitmap.Width:=image1.Picture.Width;
      bitmap.Height:=image1.Picture.Height;
      bitmap.Canvas.Brush.Color:=$000000;
      bitmap.Canvas.FillRect(bitmap.Canvas.ClipRect);
      bitmap.Canvas.brush.Color:=$FFFFFF;
      bitmap.Canvas.Ellipse(10,10,90,90);
      //image2.Canvas.Draw(0,0,bitmap);
      bitblt(image2.Canvas.Handle,0,0,image2.Width,image2.Height,bitmap.Canvas.Handle,0,0,cmSrcCopy);
      image2.Canvas.CopyMode:=cmSrcAnd;
      //image2.Canvas.CopyRect(image2.ClientRect,image1.Canvas,image1.ClientRect);
      bitblt(image2.Canvas.Handle,0,0,image2.Width,image2.Height,image1.Canvas.Handle,0,0,cmsrcand);
      image2.Refresh;
      finally
        bitmap.Free;
      end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      bitmap:Tbitmap;
    begin
      bitmap:=Tbitmap.Create;
      try
      bitmap.Width:=image1.Picture.Width;
      bitmap.Height:=image1.Picture.Height;
      bitmap.Canvas.Brush.Color:=$000000;
      bitmap.Canvas.FillRect(bitmap.Canvas.ClipRect);
      bitmap.Canvas.brush.Color:=$FFFFFF;
      bitmap.Canvas.Ellipse(150,50,240,180);
      //image2.Canvas.Draw(0,0,bitmap);
      bitblt(image2.Canvas.Handle,0,0,image2.Width,image2.Height,bitmap.Canvas.Handle,0,0,cmSrcCopy);
      image2.Canvas.CopyMode:=cmSrcAnd;
      //image2.Canvas.CopyRect(image2.ClientRect,image1.Canvas,image1.ClientRect);
      bitblt(image2.Canvas.Handle,0,0,image2.Width,image2.Height,image1.Canvas.Handle,0,0,cmsrcand);
      image2.Refresh;
      finally
        bitmap.Free;
      end;
    end;end.
      

  2.   

    //能否将用键盘上的方向键代替鼠标的移动??
    可以的,使用API
    BOOL SetCursorPos(    int X, // horizontal position  
        int Y  // vertical position
       );
     可以用程序设置鼠标的位置的。
      

  3.   

    谢谢,
    TO cfqdream(软艺) ( ) 
     谢谢,但用方向键代替鼠标的移动,还是不大会,能否具体点?
      

  4.   

    当按下左右键时,SENDMESSAGE(鼠标移动消息)