Показать сообщение отдельно
  #24  
Старый 18.03.2011, 19:12
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 663
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

А смысл пересылать МовТу, ЛайнТу? Может проще переслать координаты линии и все?
Я бы сделал так:
Код:
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 - это координаты прямоугольника, в который вписывается рисуемая фигура.

Я бы так делал.
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием