|
Вопрос # 3 980/ вопрос открыт / |
|
Здравствуйте!
Помогите пожалуйста... Как мне можно разбить компонент image на "условные" части? То есть, суть такова, я тыкаю правой кнопкой мыши и фрагмент под мышей закрашивается в красный, левой, в белый... Ну или как мне применить событие "заливки" к 400 компонентам image сразу? Кстате второй вариант будет проще для меня...
 |
Вопрос задал: padonak (статус: Посетитель)
Вопрос отправлен: 5 апреля 2010, 18:33
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: webkent
Здравствуйте, padonak!
Вот файл проекта. http://webfile.ru/4409570
Я там написал ту часть, что окрашивает квадраты и записывает в массив какие из них уже окрашены. Так же убирает при повторном клике. Логику не писал - в вопросе этого нет, да и опять же лень =)
Везде поставил комментарии, должно быть понятно, так что училке объяснишь... =)
Если неохота качать, выкладываю код, просто скопируй его.
Приложение: Переключить в обычный режим-
- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs;
-
- type
- TForm1 = class(TForm)
- procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.dfm}
-
- procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- var
- MouseX,MouseY:integer;
- begin
-
-
-
-
- MouseX:=MouseX+1;
-
- MouseY:=MouseY+1;
-
-
-
-
-
-
- end
-
-
-
- Form1.Canvas.Rectangle(MouseX-40, MouseY-40, MouseX, MouseY);
- Massiv[Round((MouseX-40)/40), Round((MouseY-40)/40)]:=false;
- end;
- end;
- end;
-
- end.
 |
Ответ отправил: webkent (статус: 2-ой класс)
Время отправки: 6 апреля 2010, 16:36
|
Мини-форум вопроса
Всего сообщений: 27; последнее сообщение — 6 апреля 2010, 18:37; участников в обсуждении: 5.
Страницы: [« Предыдущая] [1] [2]
|
Вадим К (статус: Академик), 6 апреля 2010, 17:00 [#21]:
Не от кол-ва точек это зависит, а от того, сколько раз будете обращаться к массиву пикселей.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
padonak (статус: Посетитель), 6 апреля 2010, 17:24 [#22]:
Непонимаю как работать с волновым алгоритмом. Да, я понял что там присутствует шаг, но как построить цепочку? Да и вобще, нужно идти с конца чтобы потом не переворачивать весь массив, но как объеденить в одной ячейке, информацию: "здесь уже были", "здесь не были", "сюда нельзя?" + номер ячейки(ну и шаг куда-то тоже притулить нужно)?
|
|
Вадим К (статус: Академик), 6 апреля 2010, 17:29 [#23]:
а в чем проблема то? один массив держим с "картой". и в нем к примеру 0 - свободная ячейка. 1 - занятая.
Второй массив для записи шагов. если 0 - не были в ячейке, если больше нуля - это номер шага. И так дальше.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
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...
И как вот по этим массивам построить путь?
|
|
padonak (статус: Посетитель), 6 апреля 2010, 18:37 [#27]:
Вадим, спасибо огромное... До меня наконец дошло...
|
Страницы: [« Предыдущая] [1] [2]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|