怎样用winsock传送canvas的pen.style,pen.color,brush.style,brush.color属性?(50分)

  • 主题发起人 主题发起人 flyingworm
  • 开始时间 开始时间
F

flyingworm

Unregistered / Unconfirmed
GUEST, unregistred user!
如题,想要实现两台(以上)机器同步画图,因此想通过udp协议传送Image.canvas的各个属性.
不知可行否,还有没有别的方法可以实现.
现在的问题是,我用字符串传递上述属性,编译器不能转换,应怎样声明和实现?

本人新手,请大家解答时尽量详细,先行致谢!
 
呵..定个协议..:
比如发个:1:代表是pen 的width 为1等...
 
//所需傳遞的記錄結構,Client端与Server端都需聲明,並且保持一致.
type
TCanvasRec=packed record
BrushStyle:Integer;
BrushColor:Integer;
PenStyle:Integer;
PenColor:Integer;
end;

//---------------------------------------------------
//Client端
procedure TForm1.Button1Click(Sender: TObject);
var
Rec:TCanvasRec;
begin
with Rec do
begin
BrushStyle:=Integer(Image1.Canvas.Brush.Style);
BrushColor:=Integer(Image1.Canvas.Brush.Color);
PenStyle:=Integer(Image1.Canvas.Pen.Style);
PenColor:=Integer(Image1.Canvas.Pen.Color);
end;
with IdUDPClient1 do
begin
SendBuffer(Rec,SizeOf(Rec));
end;
end;

//---------------------------------------------------
//Server端
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
Rec:TCanvasRec;
begin
AData.ReadBuffer(Rec,SizeOf(Rec));
with Image1.Canvas do
begin
Brush.Style:=TBrushStyle(Rec.BrushStyle);
Brush.Color:=TColor(Rec.BrushColor);
Pen.Style:=TPenStyle(Rec.PenStyle);
Pen.Color:=TColor(Rec.PenColor);
end;
end;
 
多谢两位的精彩回复.
 
这个问题主要实在数据类型的转换上面犯糊涂.smokingroom的代码很对症.
 
后退
顶部