如何实现,抓取一个form里面的一个image,请指教!

解决方案 »

  1.   

    var
      bmp:Tbitmap;
    begin
      bmp := Tbitmap.Create;
      bmp := image1.Pictrue.Bitmap;
    //这是就可以使用bmp了,如:
      image2.Picture.Bitmap := bmp;
      

  2.   

    自动的,就是截取form里可以显示图片的一个image里的图片
    128*128的
      

  3.   

    var JpgImage:TJPEGIMage;
    begin
      JPGImage:=TJPGIMage.Create;
      Try 
      JPGImage.Assign(Form1.Image.Picture.BitMap);
      JPGImage.SaveToFile('D:\pic.jpg');
      finally
      JPGImage.Free;
      end;
    end;
      

  4.   

    具体说: 有一个form,上面有个image , 从硬盘打开一个图片放到image1里,然后我点一个button,就可以实现抓取这个image1里的图片(128*128的bmp图),并在image2里显示出刚刚抓取的图
      

  5.   

    啊??????在image1里还有一个label呢,所以我就要把这个label和image1合并为一个image2
      

  6.   

    procedure ScreenShot(hWindow: HWND; bm: TBitmap);
    var
      Left, Top, Width, Height: Word;
      R: TRect;
      dc: HDC;
      lpPal: PLOGPALETTE;
    begin
      if not IsWindow(hWindow) then Exit;
      GetWindowRect(hWindow, R);
      Left := R.Left;
      Top := R.Top;
      Width := R.Right - R.Left;
      Height := R.Bottom - R.Top;
      bm.Width := Width;
      bm.Height := Height;
      dc := GetDc(0);
      if (dc = 0) then begin
        Exit;
      end;
      if (GetDeviceCaps(dc, RASTERCAPS) and
        RC_PALETTE = RC_PALETTE) then begin
        GetMem(lpPal, SizeOf(TLOGPALETTE) +(255 * SizeOf(TPALETTEENTRY)));
        FillChar(lpPal^,SizeOf(TLOGPALETTE) +(255 * SizeOf(TPALETTEENTRY)),#0);
        lpPal^.palVersion := $300;
        lpPal^.palNumEntries := GetSystemPaletteEntries(dc,0,256,lpPal^.palPalEntry);
        if (lpPal^.PalNumEntries <> 0) then begin
          bm.Palette := CreatePalette(lpPal^);
        end;
        FreeMem(lpPal, SizeOf(TLOGPALETTE) + (255 * SizeOf(TPALETTEENTRY)));
      end;
      BitBlt(bm.Canvas.Handle,0,0,Width,Height,Dc,Left,Top,SRCCOPY);
      ReleaseDc(0, dc);
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      b: TBitMap;
    begin
      b := TBitmap.Create;      // 创建一个 BITMAP 来存放图象
      ScreenShot(Image1.Handle, b);
      Image2.Picture.Bitmap := b;
      b.Free;
    end;
      

  7.   

    用procedure ScreenShot(hWindow: HWND; bm: TBitmap);可以截取指定Handle的屏只不过只能截取一屏