А смысл пересылать МовТу, ЛайнТу? Может проще переслать координаты линии и все?
Я бы сделал так:
Код:
type
TFigure = (fLine, fRectangle, fEllipse); // тип фигуры, которую рисуем (линия, прямоугольник, элипс)
TDrawCommand = packed record // команда на рисование
PenColor, BrushColor: TColor; // цвет кисти и цвет заливки
LineWidth: Integer; // толщина линии
BrushStyle: TBrushStyle; // стиль заливки
PenStyle: TPenStyle; // стиль линии
Figure: TFigure; // тип фигуры для отрисовки
Position: TRect; // положение фигуры
end
Впринципе, это уже готовый пакет для передачи, причем с фиксированнм размером!!!
Код:
Отправка:
var
cmd: TDrawCommand;
begin
with cmd do
begin
// выставляем нужные значения
end;
ClientSocket1.Socket.SendBuf(dc, SizeOf(cmd));
end;
Получение:
var
cmd: TDrawCommand;
begin
Socket.ReceiveBuf(cdm, SizeOf(cmd))
end;
После получения не надо разбирать полученные данные! Единствоенное, надо контроллировать размер приходящих данных и т.п. (см. как работать с сокетами). Ну и уже вся информация для рисования есть!
Поясню про Position: TRect;
1. Если у тебя тип фигуры fLine (линия), то Position.TopLeft - это начало линии (MoveTo), а Position.BottomRight - конец линии.
2. Если фигура fRectangle или fEllipse - это координаты прямоугольника, в который вписывается рисуемая фигура.
Я бы так делал.