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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка нажатия мыши и закрашивание, Закрашивание части canvas при нажатии 
:(
    Опции темы
jDeuterium
Дата 10.1.2013, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я рисую на canvas окружность и две линии, которые делят ее на 4 части, при нажатии на одну из частей необходимо ее закрасить, а все остальные оставить не закрашенными.
Заранее спасибо

Добавлено через 12 минут и 58 секунд
С этим я разобрался:
Код

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
Form1.Image1.Canvas.brush.color:=RGB(50, 205, 50);
Form1.Image1.Canvas.FloodFill(x, y,Image1.Canvas.Pixels[x,y], fssurface);
end;


Теперь другой вопрос, так как я делаю тест, то мне надо проверить ту ли я часть окружности выбрал.
 Например вопрос в какой части окружности находится 45 градусов? 
И если я выбрал правильно, то закрашиваем зеленым, а если не правильно, то красным

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  canvas.png 3,38 Kb
PM MAIL   Вверх
DarkProg
Дата 10.1.2013, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

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



Самый простой способ - это интерпретировать окружность как квадрат. Квадрат ведь разбить на 4 части и вычислить что координаты входят в ту четвертинку что вы нажали не сложно ;)
И проверка на то что нажали внутри окружности.

Ну а правильнее это привязать параметрической уравнение окружности.
Параметрической уравнение

Знак меняете с равенства на меньше либо равно, только не ошибитесь с углом ;)


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
jDeuterium
Дата 10.1.2013, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Сделал намного проще
Код

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if (x>150) and (y<150) then
begin
Form1.Image1.Canvas.brush.color:=RGB(50, 205, 50);
Form1.Image1.Canvas.FloodFill(x, y,Image1.Canvas.Pixels[x,y], fssurface);
ShowMessage('Правильно!');
Form1.Image1.Enabled:=false;
end
else
begin
Form1.Image1.Canvas.brush.color:=RGB(255, 48, 48);
Form1.Image1.Canvas.FloodFill(x, y,Image1.Canvas.Pixels[x,y], fssurface);
ShowMessage('Не правильно!');
end;
end;

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

Запрещено:

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

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

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

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


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

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


 




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


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

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