我做了一个,但是在CLIENT端显示出来图像总是闪烁,不是用一个时间控件在固定时间内读取端发过来的流吗?请大家赐教下,有没有代码例子,Thank You

解决方案 »

  1.   

    http://www.delphiboy.com/cgi-bin/doc/datacontent.php?no=119
    我试过,应该没有问题.我用的是delphi 6.0
    procedure Tserver.SUDPDataReceived(Sender: TComponent;
      NumberBytes: Integer; FromIP: String; Port: Integer);
    var
      ReqCode:array[0..29] of char;
      ReqCodeStr:string;
    begin
      ReqCodeStr:='show'+area;
      StrpCopy(ReqCode,ReqCodeStr);
      SUDP.ReadStream(TmpStream);
      RsltStream.CopyFrom(TmpStream,NumberBytes);
      if NumberBytes< BufSize then { 数据已读完 }
      begin
        RsltStream.Position:=0;
        Image1.Picture.Bitmap.LoadFromStream(RsltStream);
        TmpStream.Clear;
        RsltStream.Clear;
        SendAgain;     //自己加的,读完以后,再发送,其他那上面一样
      end
      else
      begin
        TmpStream.Clear;
        ReqCode:='show';
        SUDP.RemoteHost:=ip;
        SUDP.SendBuffer(ReqCode,30);
      end;
    end;procedure Tserver.SendAgain;
    var
      ReqCode:array[0..29] of char;
      ReqCodeStr:string;
    begin
      //ip :='172.30.241.22';
      //if inputquery('ip address','prompt',ip) = false then exit;
      area :='0:0:1024:768';
      ReqCodeStr:='show'+Edit1.text
      StrpCopy(ReqCode,ReqCodeStr);
      TmpStream.Clear;
      RsltStream.Clear;
      SUDP.RemoteHost:=ip;
      SUDP.SendBuffer(ReqCode,30);
    end;
      

  2.   

    闪烁的话,用一下双缓冲
    self.doublebuffered := True;
      

  3.   

    我做的通过DCOM获得服务器端的图像并显示,刚开始也闪烁,
    后来发现每次获得图像后不要修改Image组件的width和height就可以了