Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2010, 21:55   #1
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
Стрелка Не закрашивается область. ( FloodFill)

Всем привет
Почему-то не работает процедура FloodFill.
вот простенький код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i,a,b,c: integer;
begin
for i := 1 to 1 do
begin
  RAndomize;
  a:= random(256);
  b:= random(256);
  c:= random(256);
  canvas.brush.color:=RGB( a, b,c );
  canvas.pen.color:=RGB( a, b,c );
  canvas.MoveTo(400,20);
  canvas.LineTo(400, 200);
  canvas.MoveTo(400,200);
  canvas.LineTo(350, 200);
  canvas.MoveTo(350,200);
  canvas.LineTo(350, 20);
  canvas.MoveTo(350,20);
  canvas.LineTo(400, 20);
  Canvas.FloodFill(390,19,RGB( a, b,c ),fsBorder);
end;
end;
Пожалуйста , подскажите в чём ошибка . ( цвет рамки меняется, а вот область не закрашиается)
Заранее благодарю ))
прикреплю архив.
Вложения
Тип файла: zip 3Диограмма.zip (17.6 Кб, 14 просмотров)
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Старый 03.06.2010, 23:15   #2
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i,a,b,c: integer;
begin
//for i := 1 to 1 do  - зачем тут цикл? Абсолютно не нужен
//begin
  RAndomize;
  a:= random(256);
  b:= random(256);
  c:= random(256);
  canvas.brush.color:=RGB( a, b,c );
  canvas.pen.color:=RGB( a, b,c );
  canvas.MoveTo(400,20);
  canvas.LineTo(400, 200);
  //canvas.MoveTo(400,200);  -  эти MoveTo не нужны. Курсор и так находится в указанной точке.
  canvas.LineTo(350, 200);
  //canvas.MoveTo(350,200);
  canvas.LineTo(350, 20);
  //canvas.MoveTo(350,20);
  canvas.LineTo(400, 20);
  //Canvas.FloodFill(390,19,RGB( a, b,c ),fsBorder);
     // координата по У находитсе вне прямоугольника, а должна быть внутри
  Canvas.FloodFill(390,21,RGB( a, b,c ),fsBorder);
//end;
end;
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 04.06.2010, 11:24   #3
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i,a,b,c: integer;
begin
for i := 1 to 1 do
begin
  RAndomize;
  a:= random(256);
  b:= random(256);
  c:= random(256);
  canvas.brush.color:=RGB( a, b,c );
  canvas.pen.color:=RGB( a, b,c );
  canvas.MoveTo(400,20);
  canvas.LineTo(400, 200);
  canvas.MoveTo(400,200);
  canvas.LineTo(350, 200);
  canvas.MoveTo(350,200);
  canvas.LineTo(350, 20);
  canvas.MoveTo(350,20);
  canvas.LineTo(400, 20);
  Canvas.FloodFill(390,21,RGB( a, b,c ),fsBorder);
end;
Всё равно не работает почему-то.....
Вложения
Тип файла: zip 3Диограмма.zip (18.2 Кб, 17 просмотров)
против абортов=за + жизнь;.фкн вгу;_______________________мойблг

Последний раз редактировалось vedro-compota; 04.06.2010 в 11:26.
vedro-compota вне форума Ответить с цитированием
Старый 04.06.2010, 12:16   #4
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

Кнопка закрывала точку (191, 21) и поэтому процедура не работала , даже после того как DeKot указал точку , находящуюся внутри замкнутой области.
Мораль темы- " кнопки влияют на FloodFill ".
DeKot , спасибо большое ))
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Старый 04.06.2010, 13:25   #5
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Цитата:
Мораль ...
надо четко указывать задание или формулировать задачу.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 05.06.2010, 20:05   #6
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

Задача была сформулирована правильно, и Вы указали ошибку котора действительно была. Просто после исправления заливка всё равно не выполнялась , так как точка, координаты которой указывались в параметрах фудфила закрывала кнопка. Вот и всё )) Спасибо ))
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прозрачная область Sanek_ntsk Мультимедиа в Delphi 5 22.02.2010 14:21
Область компромиссов Sweta Помощь студентам 0 03.09.2009 11:31
область видимости ? artem779 Общие вопросы Delphi 3 14.09.2007 09:34