改源码这个可行,但我不会。   
我要表达的意思是:我的图片宽度是90像素 image的宽度是30像素。 如果不动的情况下,image显示得是前30像素的内容,image里有个居中属性,我设置后,可以居中显示30-60像素的内容。我现在想要image显示60-90像素的内容。 而不显示60像素以前的内容。  
大家明白了吗?

解决方案 »

  1.   

    试试用裁切,呵呵
    http://topic.csdn.net/t/20051106/10/4374532.html
      

  2.   

    看这个吧,更直接
    http://topic.csdn.net/t/20030206/18/1406971.html
      

  3.   

    最简单是TScrollBox加TImage,只需设置Image的top和left就行了
      

  4.   

     bitblt(image2.Canvas.Handle,0,0,panel1.Width,panel1.Height,image1.Canvas.Handle,panel1.Left,panel1.Top,srccopy);用这个复制图像
      

  5.   

    不用 CopyRect 的话, 纯控件可以试下面的.procedure TForm1.FormCreate(Sender: TObject);
    var
      Img: TImage;
    begin
      ScrollBox1.BorderStyle:= bsNone;
      ScrollBox1.HorzScrollBar.Visible:= false;
      ScrollBox1.VertScrollBar.Visible:= false;
      ScrollBox1.Width:= 30;
      Img:= TImage.Create(ScrollBox1);
      Img.Picture.LoadFromFile('d:\1.bmp');
      Img.Parent:= ScrollBox1;
      Img.AutoSize:= true;
      Img.Left:= 30 - Img.Width;
    end;
      

  6.   

    StretchBlt的话:procedure TForm1.FormCreate(Sender: TObject);
    begin
      Image2.Picture.LoadFromFile('d:\1.bmp');
      Image2.AutoSize:= true;
      Image1.Width:= 30;
      Image1.Height:= Image2.Height;
      StretchBlt(Image1.Canvas.Handle,0,0,30,Image2.Height,
                Image2.Canvas.Handle,Image2.Width-30,0,30,Image2.Height,SRCCOPY);
    end;