他这里传输的画面差异值,传输数据较小,因而更高效。根据提供的几个record(相互之间是包含关系,自己理一下),你可以依据取到的坐标(在CHANGES_RECORD中)和颜色值,去填充画布或bitmap...循环处理....。
解决方案 »
- 能通过编程确定一个表中有几条记录?
- 能不能让toolbutton下拉列表不满足条件的时候就不自动弹出?
- 有关SQL SERVER连接,救急呀!!!
- 如何检查一个字符串中是否含有'.'这个字符?
- 怎么将选定的子窗口设置为活动的子窗口:如要将MDIChildren[5]设置为活动的???
- 一个不算难的问题,大家进来帮我想想,用什么控件显示好?分不够还可以给的!
- 关于Query查询的问题
- delphi读取内存地址,有经验的大叔来看看
- 如何实现端点续传!!用到了那些技术?
- QReport 报表在预览时为什么不能横向显示?我在纸张设置中明明设定为横行呀!!
- 怎样把excel的格式导入Delphi中?
- 事件触发问题不明白,以前没这么做过。。
版主,看了你回复后,我写了下代码,不知为什么总是不对,麻烦看看代码有什么错误之处,还请指出,谢谢
首先,我把原单元注册表的路径修改了下,
MINIPORT_REGISTRY_PATH = 'SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Services';
然后,我的调用方法如下var
i:Integer;
a:TVideoDriver;
b:bool;
c:trect;
begin
a:=TVideoDriver.Create;
b:=True;
c.Left:=0;
c.Top:=0;
c.right:=screen.Width;
c.Bottom:=screen.Height;
a.Activate(b,@c);
a.MapSharedbuffers(b); for i:=0 to a.bufdata.buffer.counter -1 do
begin
with a.bufdata.buffer.pointrect[i] do
begin
image1.Picture.Bitmap.Canvas.brush.color:= color;
Image1.Picture.Bitmap.Canvas.FillRect(rect);
//Memo1.Lines.Add(IntToStr(rect.Top)+' '+IntToStr(rect.Left)+' '+IntToStr(rect.Right)+' '+IntToStr(rect.Bottom)+' '+ ColorToString(color));
end;
end;
Image1.Refresh;
a.UnMapSharedbuffers;
a.Deactivate;
end;出来的图是黑色,或者是乱色,麻烦各位大哥指点下,谢谢!