Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.04.2009, 13:10
Proger10 Proger10 вне форума
Прохожий
 
Регистрация: 02.03.2009
Сообщения: 26
Репутация: 10
По умолчанию Отслеживание изменений на конве

Необходимо сделать так, чтоб на одном компе можно было рисовать, а на другом видеть, что происходит (совмесный графический редактор). Передавать инфу нужно через сокеты. Каким образом можно узнать, что юзер нарисовал на канве
Ответить с цитированием
  #2  
Старый 13.04.2009, 16:04
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Эм... О_о... если канва не слишком большая - можно передавать всё изображение... А для отдельных участков - хз...
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #3  
Старый 13.04.2009, 17:58
Proger10 Proger10 вне форума
Прохожий
 
Регистрация: 02.03.2009
Сообщения: 26
Репутация: 10
По умолчанию

В этом то и дело, что всю канву передовать нехорошо..... Вариант использования сторонних компонентов готовых неподходит....

Последний раз редактировалось Proger10, 13.04.2009 в 18:09.
Ответить с цитированием
  #4  
Старый 13.04.2009, 18:15
Аватар для 0nni
0nni 0nni вне форума
Начинающий
 
Регистрация: 13.12.2008
Адрес: Туапсе
Сообщения: 161
Репутация: 20
По умолчанию

Метафайлы не подойдут?
__________________
...сказал, и загрустил от бесспорной своей правоты
Ответить с цитированием
  #5  
Старый 13.04.2009, 18:40
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

А почему-бы не передавать теже комманды, что породили изменения?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 13.04.2009, 19:48
Proger10 Proger10 вне форума
Прохожий
 
Регистрация: 02.03.2009
Сообщения: 26
Репутация: 10
По умолчанию

Хм... Как я сам не догадался????

Неохото создавать новую тему, так что спрашиваю здесь:
С Карандашом, я всё сделал. Для всех остальных компонентов неоходимо сделать что-то типа предпросмотра. Просто нарисовать линию (прямоугольник, круг) легко. Но нужно сделать так чтоб удалить то что нарисовал(во время рисования объекта). В общем нужно отменить последние действие. Как это сделать?
Ответить с цитированием
  #7  
Старый 13.04.2009, 19:52
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Как вариант - сохранить "бэкап" канвы, и накладывать превью на него, логируя и воспроизводя действия... (Сори, если непонятно объяснил)
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #8  
Старый 13.04.2009, 19:55
Proger10 Proger10 вне форума
Прохожий
 
Регистрация: 02.03.2009
Сообщения: 26
Репутация: 10
По умолчанию

Идею понял. Но как сделать бэкап канвы???
Ответить с цитированием
  #9  
Старый 13.04.2009, 20:06
Proger10 Proger10 вне форума
Прохожий
 
Регистрация: 02.03.2009
Сообщения: 26
Репутация: 10
По умолчанию

Создать переменную с типом TCanvas. Неполучается (PaintBox1.Canvas это параметр только для чтения).
Ответить с цитированием
  #10  
Старый 13.04.2009, 20:24
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Код:
var
  tempCanv: TCanvas;
begin
  tempCanv:=TCanvas.Create;  //Непомню, может, надо указывать "родителя"....
  tempCanv.Assign(PaintBox1.Canvas); //Бекапим
  ...
  //Делаем что надо...
  ...
  PaintBox1.Canvas.Assign(tempCanv); //Восстанавливаем
  ...
  tempCanv.Free; //Не забываем прибраться за собой)))
end;
Не проверял, но вроде всё так.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj

Последний раз редактировалось PhoeniX, 13.04.2009 в 20:31.
Ответить с цитированием
  #11  
Старый 13.04.2009, 20:34
Proger10 Proger10 вне форума
Прохожий
 
Регистрация: 02.03.2009
Сообщения: 26
Репутация: 10
По умолчанию

Говорит: Cannot assign a nil to a TControlCanvas.
Ответить с цитированием
  #12  
Старый 13.04.2009, 20:36
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

А, вспомнил... Канву хран проассигниш, там лаг кокойто...
Читай хелпы по этой теме. Тут я бессилен... Щас, полазаю по Делфи Ворлду, мб, чё найду..
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #13  
Старый 13.04.2009, 20:48
Proger10 Proger10 вне форума
Прохожий
 
Регистрация: 02.03.2009
Сообщения: 26
Репутация: 10
По умолчанию

Может мме поможит CopyRect()
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:50.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025