Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как нарисовать и стереть линию на объекте Screen? проблема в стирании 
:(
    Опции темы
neutrino
Дата 22.10.2002, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Здравствуйте.
Я уже неделю пытаюсь решить одну задачу: нужно поверх формы и всех присутствующих контролов нарисовать линию, а потом стереть. Пытался решить следующими способами:
  1) вызвать у формы и у всех дочерних компонентов Invalidate, затем нарисовать линию. Этот способ, во-первых, плох тем, что нужно перерисовывать все из-за какой-то линии, а во-вторых, мне не удалось его реализовать .
  2) нарисовать линию XOR-маской и затем ее отксорить еще раз. Вот это я просто не знаю как сделать.
Во всех случаях я рисую получив контекст обьекта Screen, чтобы линия была поверх контролов. Я думаю, что второй способ реализовать невозможно, потому что я рисую на Screen'е, а контролы у меня как-бы под ним, так вряд ли получится как-то считать цвета их точек.
Может кто-нибудь уже сталкивался с такой проблемой?

P.S. Ой, забыл сказать, я ведь рисую линию с заданной точки до текущего положения мышки. Поэтому я перерисовываю линию каждый раз (при движении мыши) и мне ее надо стирать с экрана. В этом и проблема, что я не могу ее стереть.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
МММ
Дата 22.10.2002, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 18.6.2002

Репутация: нет
Всего: 1



А если форму (ы) прорисовывать!!!

With TCanvas.Create Do
try
 form1.Refresh;
 Handle:=GetDC(0);
 Pen.Color:=random(color);
 pen.Mode :=pmNotXor ;
 MoveTo(form1.Left+ 10,form1.top +10);
 LineTo(form1.Left+x,form1.top+y);
 finally
 Free;
end;
можно здесь X , Y глобальные переменные координат мышки брать


--------------------
PM MAIL   Вверх
neutrino
Дата 23.10.2002, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Мне надо нарисовать поверх формы и всех контролов!!! По этому я рисую на объекте Screen. Получаю его DC через Handle...


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
neutrino
Дата 28.10.2002, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Ого! А это и правда работает! Только я сделал так:

with TCanvas.Create do
try

  Handle:=GetDC(0);
  Pen.Color:=clBlack;
  Pen.Mode :=pmNotXor ;
  MoveTo(FOldX, FOldY);
  LineTo(Mouse.CursorPos.X, Mouse.CursorPos.X);
finally
  Free;
end;

Только я не понимаю почему тут в первой строке так написанно. Я всегда думал, что DC и Handle - разные вещи. Спасибо МММ!


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Fantasist
Дата 29.10.2002, 01:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: нет
Всего: 41



Handle - это абстракция, как вам известно это числовой индификатор какого-то объекта(в данном случае объекта виндос). Скорее всего это какой-то указатель для внутреннего пользование системой. Короче говоря, handle есть практически у любого объекта виндос и VCL во всех своих компонентах его везде одинакого называет. Соотсветсвенно TCanvas.Handle - это хэндл device context'а как TWinColntrol.Handle - хэндл окна, или TFont.Handle - хэндл фонта.


--------------------
Волны гасят ветер...
PM MAIL   Вверх
neutrino
Дата 30.10.2002, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Спасибо, Fantasist. Я посмотрел тип свойства Handle у Canvas, он и правда HDC! А я всегда думал, что он как у всех компонентов.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0815 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.