首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

征求屏幕截屏时不调用API的方法,该如何处理

2012-03-09 
征求屏幕截屏时不调用API的方法本人最近在研究屏幕截屏的技术,希望能有朋友可以帮我找到不调用API可以快速

征求屏幕截屏时不调用API的方法
本人最近在研究屏幕截屏的技术,希望能有朋友可以帮我找到不调用API可以快速截屏的方法,目前我是用的截屏方法与大家分享,希望能有不调用API的截屏方法,谢谢啦:
procedure TFrm_Main.CopyScreen(x : integer; y : integer; Width : integer; Height : integer; bm : TBitMap);
var
  dc: HDC; lpPal : PLOGPALETTE;
begin
  // 检测所需抓屏的区域
  if ((Width = 0) or (Height = 0)) then exit;
  bm.Width := Width;
  bm.Height := Height;
  //获取设备上下文
  dc := GetDc(0);
  if (dc = 0) then exit;
  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,x,y,SRCCOPY);
  ReleaseDc(0, dc);
end;

[解决办法]
http://www.cvcphp.com/delphi_content.aspx?id=20100911054401&tip=%BD%D8%C6%C1DirectX

热点排行