image1.Canvas.CopyRect
(Rect (10, 10, 160, 130),VideoWindow1.canvas,
     Rect (10, 10, 160, 130));----ok
image3.Canvas.Pixels[i,j]:=image1.Canvas.Pixels[i,j];---ok
  for i:=13 to 80    do
for j:=13 to 80     do
begin
image3.Canvas.Pixels[i,j]:=VideoWindow1.Canvas.Pixels[i,j];---不行,要如何写
另: image1.Canvas.CopyRect
(Rect (10, 10, 160, 130),VideoWindow1.canvas,
     Rect (10, 10, 160, 130));----ok ,也只栲屏,怎能只拷VideoWindow1内容,VideoWindow1是视频显示窗口。---解决可加分

解决方案 »

  1.   

    不要用Pixels!效率N低的~
    ScanLine会快很多
    而且最好用内部Bitmap处理后再用Image显示
      

  2.   

    可能是你的VideoWindow是使用DirectX播放的。而一般的GDI方法是不能获取DirectX的图像,如image3.Canvas.Pixels[i,j]:=VideoWindow1.Canvas.Pixels[i,j] 就不行,实际调用的是windows的getpixel API。。而CopyRect是调用API:StretchBlt,这个系API的实现也许不一样。仅供参考。
      

  3.   

    楼上的有理(ID与我这么相近,呵呵)
    要取dx视频显示窗口内容,可参考:
    http://topic.csdn.net/t/20051106/11/4374651.html
    用我22楼的程序可以.用ly_liuyang的方法也可
      

  4.   

    楼上的 const   
          Is555:boolean=false;   
        function   GetRed(color:WORD   ):byte;   
        begin   
              if(   Is555   )   then   
                      result:=   (color   shr   7)   and   $ff   
              else   
                      result:=   (color   shr   8)   and   $ff;   
      end;   
    这里我看不懂。
    能不能直接写一行得到VideoWindow1.Canvas.Pixels[10,10]这一点红色值。
    我马上加分给你。谢谢。最好在窗口最小化时能取值,我已经可以取屏幕的值了。
      

  5.   

    这个是16位色。每个像素16比特模式,又称为highcolor,每个RGB的值5比特(通常称为555模式)或额外的颜色有点绿色(俗称565模式). 新增绿颜色是由于那人眼有能力找出更多的绿色帐篷比其他任何颜色. 程序中的 is555 是判断是否是555模式。
      

  6.   

    VideoWindow1.Canvas.Pixels[10,10]这一点红色值,能不能直接给代码