|
发表于 2023-8-3 06:03:32
|
显示全部楼层
四川省绵阳市
好久没弄了,找到代码了 方式太多了,发几段处理方法把
.版本 2
time1 = _GetCurrenTime ()
.判断循环首 (真)
m_hDxgi.GetFrame (m_bin) ' 0.08毫秒
m_bmpHandle = CreateBitmap (m_nWidth, m_nHeight, 1, 32, m_bin) ' 4毫秒
see.从位图句柄创建 (m_bmpHandle, 24) ' 11毫秒
DeleteObject (m_bmpHandle)
.如果真 (see.取某点颜色 (11, 22) > 0 或 see.取某点颜色 (1900, 1000) > 0 或 _GetCurrenTime () - time1 > 1000)
跳出循环 ()
.如果真结束
处理事件 ()
.判断循环尾 ()
picsize = see.取颜色点阵大小 () '
piczjj = see.取出位图数据 () ' 2毫秒
memcpy (ddd, 字节集_取指针 (piczjj), picsize) ' 1.3毫秒
piczjj = 取空白字节集 (picsize)
.如果真 (picsize > 0)
返回 (picsize)
.如果真结束
返回 (0)
那个see是精益模块的位图处理类
.版本 2
SelectObject (newdc, oldbmp) ' 再次调用首先还原桌面兼容的位图,同时释放原本被内存DC锁定的m_bmpHandle位图资源,
DeleteDC (newdc) ' 删除这个使用过内存设备
m_hDxgi.GetFrame (m_bin, w, h) ' 0.04毫秒一次 如果加了如果真的判断,win10新特性会导致等待屏幕发生变化,才返回有效,有效节约资源(大循环判断即可),这导致必须跟着win10的刷新率过来,不判断则无脑截,我们这里需要极速识别不能没有数据
.如果真 (m_bmpHandle ≠ 0)
DeleteObject (m_bmpHandle) ' 如果前面不还原, 这里是释放不掉
.如果真结束
m_bmpHandle = CreateBitmap (w, h, 1, 32, m_bin) ' 4毫秒1次 因为dxgi创建的位图都是32位,这边逐行按点(4字节)写入m_bin
newdc = CreateCompatibleDC (0) ' 新建桌面兼容的位图,起初只有1 1的位图量,为空
oldbmp = SelectObject (newdc, m_bmpHandle) ' 把m_bmpHandle DDB位图放入桌面兼容DC
.如果真 (m_bmpHandle ≠ 0)
返回 (newdc) ' 对外使用这个DC内容。
.如果真结束
返回 (0)
这个是用桌面dc
.版本 2
.支持库 YunImage
m_hDxgi.GetFrame2 (m_bin) ' Dxgi+gdi+输出的24位图,大漠会花, 最佳方案是在创建gdi图以后复制出想要的区域越小越好,再直接写出文件,用大漠转换成24位图去用。 大漠转换全图250毫秒,小图0.5毫秒...
juxing.左边 = x ' 用于dxgi+gdiplus调试 剪辑数据区域
juxing.顶边 = y
juxing.宽度 = w
juxing.高度 = h
new.创建自扫描行 (m_nWidth, m_nHeight, 7680, 2498570, m_bin) ' 速度很快 32bppARGB 2498570 32bppRGB 139273 24bppRGB 137224 0.09ms
new.复制部分 (juxing, 2498570, new)
' 调试输出 (进制_十到十六 (ARGB到RGB (new.取某点颜色 (17, 11))))
' new.取位图句柄 () ' 全屏10毫秒 给各种bitblt的兼容dc用
piczjj = 取空白字节集 (picsize)
piczjj = new.保存到字节集 (“{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}”) ' 全屏10毫秒1次其他都不要时间 给传递回给大漠使用 “{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}” bmp 8ms
' 写到文件 (“d:\123123.bmp”, piczjj) ' 实际上写出文件时间并不多
new.销毁 ()
Yunimage.从内存解码 (piczjj, 1) ' 这里不能用从位图创建, 8ms
piczjj = 取空白字节集 (picsize)
Yunimage.编码到内存 (piczjj, 1) ' 6ms,
' Yunimage.编码到文件 (“d:\tetet.bmp”, 1)
picsize = 取字节集长度 (piczjj)
memcpy (ddd, 字节集_取指针 (piczjj), picsize) ' 1.3毫秒一次
' Gdiplus关闭 (biaoji) '
返回 (picsize)
new是 gdi plus 模块的GP位图。。 yunimage是云外归鸟的图像支持库 |
|