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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> рисование фигуры в событии OnMouseDown 
V
    Опции темы
VanHelsing
Дата 9.9.2008, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ХОЧУ ВСЕ ЗНАТЬ!!!
**
Награды: 1



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

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



Проблема в следующем: допустим рисую на канве Image прямоугольник, по нажатию клавиши мыши(левой) делаю следющее
Код

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 if (Button=mbLeft) then
 begin
  Image1.Canvas.MoveTo(X,Y);//получение начальных координат фигуры
  x1:=X;
  y1:=Y;
  ris:=true; //если true, в данный момент мы что-то рисуем
 end;
end;
 
когда клавишу отпускаю рисую окончательно фигуру
Код

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Image1.Canvas.Rectangle(x1,y1,X,Y); //рисование прямоугольника
   ris:=false;
end;

А как рисовать компонент когда мышью ведешь при нажатой клавиши. Делаю 
Код

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if (ris=true) then
    Image1.Canvas.LineTo(X,Y);//получение конечных координат фигуры 
  end;
end;

Когда так делашь при увеличении фигуры все норм но когда ведешь на уменьшение получается куча прямоугольников. Подскажите как правильно сделать? 
Решение вижу в ледующем6 мне при рисовании надо рисовать фигуру с предыдущими значениями X,Y, а потом рисовать фигуру с нынешними координатами. Как получить предыдущие значения курсора в Delphi я не знаю. 

Это сообщение отредактировал(а) VanHelsing - 10.9.2008, 17:10


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


ХОЧУ ВСЕ ЗНАТЬ!!!
**
Награды: 1



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

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



Решил проблему. Всего-то надо было одно свойство поменять:
Код

Image1.Canvas.Pen.Mode:=pmNotXor;

P.S. копал глубоко, а ответ на поверхности.  smile 


--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

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

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

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

FAQ раздела лежит здесь!


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

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


 




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


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

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