如何快速的访问屏幕上的点.(50分)

  • 主题发起人 主题发起人 小虫子:P
  • 开始时间 开始时间

小虫子:P

Unregistered / Unconfirmed
GUEST, unregistred user!
做一个远程的传送屏幕图象的东西,想每次只传与上次不同的部分,
然后在客户机上直接改掉那些不同的点,就可以少传很多数据了.
但是怎么才能很快速的改那些不同的点呢,如果用canvas的pix循环的话,
速度太慢了.有没有更好的办法呢.最好给出代码
 
建Bmp copy屏幕DC 然后用扫描线处理
 
用 鼠标 Hook
 
我想那恐怕需要比传递整个屏幕图像更多的时间,因为你要保存上次的图像并逐点比较。
 
Dc1: HDC;
Canvas: TCanvas;
Canvas.
 
将两次屏幕数据进行异或运算,结果中不为0的部分为两次屏幕不同之处
 
我要的是在网络上的数据量比较小就行了.
我要问的是怎么才能在屏幕上画上那些不同的点.
就像用scanline可以快速访问点一样.它只是读取.
有没有和它差不多的方法.快速的写屏呢.
 
那么谁能给我写个东西,能记录一系列的点的坐标和颜色信息呢.
我写了一个,结果不能用.:
type me=record
p:tpoint;
c:tcolor;
end;
然后用
ame:array[0..1600]of me;
for i:=0 to 400 do
begin
for j:=0 to 400 do
begin
if bmp2.Canvas.Pixels[i,j]<>bmp1.Canvas.Pixels [i,j] then
ame[k].p.X:=i;
ame[k].P.y:=j;
ame[k].c:=bmp2.Canvas.Pixels[i,j];
k:=k+1;
end;
end;


for l:=0 to k do
begin
image1.canvas.pixels[ame[l].p.x,ame[l].p.x]:=ame[l].c;
end;


为什么呢
 
你怎么还没改?
401X401 等于多少?决不是1601,
你看看这个
http://www.delphibbs.com/delphibbs/dispq.asp?lid=538683
 
直接写屏
 
接受答案了.
 
[red][h1]错了,分给错了呀!!!!!!!!!!!!!!!!!!!!!!!!!!!![/h1][/red]
 
后退
顶部