挂海论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
 友情提示:文字/图片广告均非网站意见,请担保交易勿直接付款,由此产生的责任自负
游戏交易就上寄售网-专注稳定-诚信赢天下玩游戏来117游戏网(H5不下载也能玩手游传奇,吃鸡,竞技都有)天下盾/国内/免实名/免备案CDN无视一切CC/DD攻击
→入驻S9企业发卡网各种全黑号辅助群:475351077 ██【我要租此广告位】██.
.. .
查看: 3383|回复: 6
打印 上一主题 下一主题

[交流] D3D的后台截图复制不到TBITMAP

[复制链接]
4中级会员
520/600

520

积分

223

主题

3

听众
已帮网友解决0 个问题
好评
0
贡献
297
海币
3997
交易币
0
跳转到指定楼层
楼主
发表于 2015-4-13 16:17:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提醒:若下载的软件是收费的"请不要付款",可能是骗子,请立即联系本站举报,执意要付款被骗后本站概不负责。(任何交易请走第三方中介,请勿直接付款交易以免被骗!切记).

友情提示:文字/图片广告均非本站意见,请担保交易勿直接付款,由此产生的责任自负!!!↑↑



//GetFrontBufferData就正常,GetBackBuffer显示是0


function PresentCallback(const Self: IDirect3DDevice9;
      const SourceRect, DestRect: PRect; const DestWindowOverride: HWND;
      DirtyRegion: PRgnData): HResult; stdcall;
var

      MenuFont: D3DX9.ID3DXFont;
      rec: PRect;
      pSurface: IDirect3DSurface9;

      ARect: TRect;
      LockedRect: TD3DLockedRect;
      BitsPerPixel: Byte;
      BMP:TBitmap;
      i,p: Integer;
      x:integer;
begin

      self.CreateOffscreenPlainSurface(Screen.Width, Screen.Height, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, pSurface, nil);
                                                                                    // D3DPOOL_SCRATCH
      //self.GetFrontBufferData(0, pSurface);
      self.GetBackBuffer(0, 0, 0, pSurface);

        //这里可以直接正常保存
      //D3DXSaveSurfaceToFile('Desktop.bmp', D3DXIFF_BMP, pSurface, nil, nil);
      ARect := Screen.DesktopRect;
      pSurface.LockRect(LockedRect, @ARect, D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_NOSYSLOCK or D3DLOCK_READONLY);

      // use Bitmap to save surface
      BMP := TBitmap.Create;
      BitsPerPixel := GetDeviceCaps(GetWindowDC(GetDesktopWindow()), BITSPIXEL);
      BMP.Width := Screen.Width;
      BMP.Height := Screen.Height;

      case BitsPerPixel of
            8: BMP.PixelFormat := pf8bit;
            16: BMP.PixelFormat := pf16bit;
            24: BMP.PixelFormat := pf24bit;
            32: BMP.PixelFormat := pf32bit;
      end;


      p := Cardinal(LockedRect.Bits);
      //GetFrontBufferData就正常,GetBackBuffer显示是0
      outputdebugstring(pchar('--'+inttostr(p)));
      for i := 0 to Screen.Height - 1 do
      begin      
            CopyMemory(BMP.ScanLine, Ptr(p), Screen.Width * BitsPerPixel div 8);
            p := p + LockedRect.Pitch;   
      end;

      bmp.SaveToFile('a.bmp');
      bmp.Free;

      pSurface.UnlockRect;
      Result := PresentNext(self, SourceRect, DestRect, DestWindowOverride, DirtyRegion);
end;

联系我时,请说是在 挂海论坛 上看到的,谢谢!



上一篇:WSASend发送问题
下一篇:一段自动刷新页面的工具.
免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.52ghai.com无关。

2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

4、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:[email protected]),本站将立即改正。

3正式会员
244/300

244

积分

68

主题

2

听众
已帮网友解决0 个问题
好评
0
贡献
176
海币
2106
交易币
0
沙发
发表于 2015-4-13 16:17:43 | 只看该作者
高手云集 马上来看看

35

积分

23

主题

2

听众
已帮网友解决0 个问题
好评
0
贡献
12
海币
594
交易币
0
板凳
发表于 2015-4-26 15:54:31 | 只看该作者

貌似很不错的样子
4中级会员
555/600

555

积分

169

主题

8

听众
已帮网友解决0 个问题
好评
0
贡献
386
海币
2608
交易币
0
地板
发表于 2015-5-17 01:32:53 | 只看该作者
执勤看帖,慢慢飘过得到一个海币. 然后用掉这个海币

35

积分

23

主题

2

听众
已帮网友解决0 个问题
好评
0
贡献
12
海币
594
交易币
0
5#
发表于 2015-5-27 01:10:02 | 只看该作者
回复一下 证明我来过

7

积分

1

主题

2

听众
已帮网友解决0 个问题
好评
0
贡献
6
海币
168
交易币
0
6#
发表于 2015-8-2 18:42:37 | 只看该作者
看不懂
回复

使用道具 举报

贡献
337
海币
1085
交易币
0
7#
发表于 2015-12-10 21:20:03 | 只看该作者
感谢楼主,支持楼主-支持 海。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

免责声明|Archiver|手机版|小黑屋|挂海论坛

GMT+8, 2024-5-19 20:53 , Processed in 0.469599 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.2

本站资源来自互联网用户收集发布,如有侵权请邮件与我们联系处理。xhzlw@foxmail.com

快速回复 返回顶部 返回列表