Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 980

/ вопрос открыт /

Здравствуйте!
Помогите пожалуйста... Как мне можно разбить компонент image на "условные" части? То есть, суть такова, я тыкаю правой кнопкой мыши и фрагмент под мышей закрашивается в красный, левой, в белый... Ну или как мне применить событие "заливки" к 400 компонентам image сразу? Кстате второй вариант будет проще для меня...

padonak Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: padonak (статус: Посетитель)
Вопрос отправлен: 5 апреля 2010, 18:33
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: webkent

Здравствуйте, padonak!
Вот файл проекта. http://webfile.ru/4409570

Я там написал ту часть, что окрашивает квадраты и записывает в массив какие из них уже окрашены. Так же убирает при повторном клике. Логику не писал - в вопросе этого нет, да и опять же лень =)

Везде поставил комментарии, должно быть понятно, так что училке объяснишь... =)

Если неохота качать, выкладываю код, просто скопируй его.

Приложение:
  1.  
  2. unit Unit1;
  3.  
  4. interface
  5.  
  6. uses
  7. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  8. Dialogs;
  9.  
  10. type
  11. TForm1 = class(TForm)
  12. procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
  13. Shift: TShiftState; X, Y: Integer);
  14. private
  15. { Private declarations }
  16. public
  17. { Public declarations }
  18. end;
  19.  
  20. var
  21. Form1: TForm1;
  22.  
  23. implementation
  24.  
  25. {$R *.dfm}
  26.  
  27. procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  28. Shift: TShiftState; X, Y: Integer);
  29. var
  30. MouseX,MouseY:integer;
  31. begin
  32.  
  33.  
  34.  
  35.  
  36. MouseX:=MouseX+1;
  37.  
  38. MouseY:=MouseY+1;
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45. end
  46.  
  47.  
  48.  
  49. Form1.Canvas.Rectangle(MouseX-40, MouseY-40, MouseX, MouseY);
  50. Massiv[Round((MouseX-40)/40), Round((MouseY-40)/40)]:=false;
  51. end;
  52. end;
  53. end;
  54.  
  55. end.


Ответ отправил: webkent (статус: 2-ой класс)
Время отправки: 6 апреля 2010, 16:36


Мини-форум вопроса

Всего сообщений: 27; последнее сообщение — 6 апреля 2010, 18:37; участников в обсуждении: 5.

Страницы: [« Предыдущая] [1] [2]

Вадим К

Вадим К (статус: Академик), 6 апреля 2010, 17:00 [#21]:

Не от кол-ва точек это зависит, а от того, сколько раз будете обращаться к массиву пикселей.
Галочка "подтверждения прочтения" - вселенское зло.
padonak

padonak (статус: Посетитель), 6 апреля 2010, 17:24 [#22]:

Непонимаю как работать с волновым алгоритмом. Да, я понял что там присутствует шаг, но как построить цепочку? Да и вобще, нужно идти с конца чтобы потом не переворачивать весь массив, но как объеденить в одной ячейке, информацию: "здесь уже были", "здесь не были", "сюда нельзя?" + номер ячейки(ну и шаг куда-то тоже притулить нужно)?
Вадим К

Вадим К (статус: Академик), 6 апреля 2010, 17:29 [#23]:

а в чем проблема то? один массив держим с "картой". и в нем к примеру 0 - свободная ячейка. 1 - занятая.
Второй массив для записи шагов. если 0 - не были в ячейке, если больше нуля - это номер шага. И так дальше.
Галочка "подтверждения прочтения" - вселенское зло.
padonak

padonak (статус: Посетитель), 6 апреля 2010, 17:32 [#24]:

Да это всё даже мне - чайнику понятно. Но как потом построить цепочку если нашли? Ведь в массиве будет с первым шагом 1-4, со вторым 1-8...

Ну я понимаю это так:

1 0 0 1 0 1
0 1 0 0 0 1
1 0 0 0 0 0
0 0 1 1(искомая) 1 1...

1 0 0 1 0 2
0 1 0 0 0 1
2 0 0 0 0 0
0 0 2 2(искомая) 2 2...

И как вот по этим массивам построить путь?
Вадим К

Вадим К (статус: Академик), 6 апреля 2010, 17:42 [#25]:

Не понимаю причины паники. может глянете на готовую реализацию? http://algolist.manual.ru/games/wavealg.php
На паскале она внизу.
Галочка "подтверждения прочтения" - вселенское зло.
Вадим К

Вадим К (статус: Академик), 6 апреля 2010, 17:43 [#26]:

вот ещё http://www.codenet.ru/progr/alg/way.php
Галочка "подтверждения прочтения" - вселенское зло.
padonak

padonak (статус: Посетитель), 6 апреля 2010, 18:37 [#27]:

Вадим, спасибо огромное... До меня наконец дошло...

Страницы: [« Предыдущая] [1] [2]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 26 апреля 2026, 00:12
Выполнено за 0.02 сек.