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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2014, 21:47   #11
Heng
Форумчанин
 
Регистрация: 27.02.2012
Сообщений: 117
По умолчанию

http://files.mail.ru/7C2553DE5E3440F1A08450173338FB05 вот
Heng вне форума Ответить с цитированием
Старый 28.01.2014, 22:49   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пожалуй твою прогу мне не осилить, но вот могу показать легкую наработку:
Код:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then begin
    Canvas.LineTo(x,y);
  end;
  if Button =mbRight  then begin
    Canvas.Brush.Color:=clRed;
    Canvas.FloodFill(x,y,Color,fsBorder);
  end
end;
Она работает как надо. Заливка ведется. Не представляю что у тебя там не так, возможно проблема в Image. Я на нем никогда не рисую, и не использую под канву. Для этого мне больше удобен PaintBox.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.01.2014, 22:55   #13
Heng
Форумчанин
 
Регистрация: 27.02.2012
Сообщений: 117
По умолчанию

согласен, я не умею понятно писать)))
на счет image я его использовал потому что, для рисования линии используется дополнительный графический объект"bm", и командой
Код:
bm.Assign(img1.Picture.Graphic);
не удается связать PictureBox, или как то можно ???
Heng вне форума Ответить с цитированием
Старый 28.01.2014, 23:00   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну там, да. Придется повыделоваться. Однако это все что я могу из опыта предложить, ибо действительно Image не юзаю.
Под "повыделоваться" имею ввиду загрузить в TBitmap картинку, а уже из нее CopyRect на канву PaintBox.

Ты вот что: Создай другой проект. Кинь на него Image и попробуй на нем мой пример. Если сработает, значит я не прав и Image святейший из компонентов, а ошибка в твоей стратегии (тогда только отладчик). Иначе... Иначе я уже свое мнение сказал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.01.2014, 23:00   #15
DpolenST
Форумчанин
 
Регистрация: 28.09.2013
Сообщений: 115
По умолчанию

Цитата:
Сообщение от Heng Посмотреть сообщение
Пытаюсь залить область на Image, которую до этого нарисовал(Карандашом)
но почему-то область не наливается, а когда щелкаю на границу этой произвольной области то она стирается, Как исправить ?

Код:
procedure TForm1.pb1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if (btn2.Down = true) and (flag = true) then   
  begin
  img1.Canvas.FloodFill(x,y,panel4.Color,fsSurface);
  end;
end;
замени
Код:
img1.Canvas.FloodFill(x,y,panel4.Color,fsSurface);
на
Код:
img1.Canvas.Brush.Color:=clRed;
img1.Canvas.FloodFill(x,y,img1.Canvas.Pixels[x,y],fsSurface);
img1.Canvas.Pixels[x,y] - цвет который мы заменяем
Что бы еще такого сделать, чтобы ничего не делать?
DpolenST вне форума Ответить с цитированием
Старый 28.01.2014, 23:04   #16
Heng
Форумчанин
 
Регистрация: 27.02.2012
Сообщений: 117
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Пожалуй твою прогу мне не осилить, но вот могу показать легкую наработку:
Код:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then begin
    Canvas.LineTo(x,y);
  end;
  if Button =mbRight  then begin
    Canvas.Brush.Color:=clRed;
    Canvas.FloodFill(x,y,Color,fsBorder);
  end
end;
Она работает как надо. Заливка ведется. Не представляю что у тебя там не так, возможно проблема в Image. Я на нем никогда не рисую, и не использую под канву. Для этого мне больше удобен PaintBox.
Все скопировал и при попытке залить замкнутый кусок, заливает всю форму. КАК ТАК ?
Heng вне форума Ответить с цитированием
Старый 28.01.2014, 23:08   #17
Heng
Форумчанин
 
Регистрация: 27.02.2012
Сообщений: 117
По умолчанию

Цитата:
Сообщение от DpolenST Посмотреть сообщение
замени
Код:
img1.Canvas.FloodFill(x,y,panel4.Color,fsSurface);
на
Код:
img1.Canvas.Brush.Color:=clRed;
img1.Canvas.FloodFill(x,y,img1.Canvas.Pixels[x,y],fsSurface);
img1.Canvas.Pixels[x,y] - цвет который мы заменяем
ОООООООООООО помогло, спасибо! Но, я не понял почему не работало, можно описать словами эту строку в сравнении с предыдущей ?
Heng вне форума Ответить с цитированием
Старый 28.01.2014, 23:11   #18
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А. ну да. Логично.
img1.Canvas.Pixels[x,y] стал тем цветом, который на Image нужно залить. Правильно, я в своем примере брал цвет канвы, где рисовал, стало быть и тебе нужно было брать цвет канвы img.
Значит я не прав по отношению к этому компоненту.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.01.2014, 23:13   #19
DpolenST
Форумчанин
 
Регистрация: 28.09.2013
Сообщений: 115
По умолчанию

FloodFil закрашивает до границы заданного цвета (для fsSurface). В вашем случае в качестве цвета, который надо залить другим цветом, я взял цвет пикселя с которого начинается заливка.
Что бы еще такого сделать, чтобы ничего не делать?

Последний раз редактировалось DpolenST; 28.01.2014 в 23:18.
DpolenST вне форума Ответить с цитированием
Старый 28.01.2014, 23:16   #20
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Вот оно и закрашивает все, где цвет Color. А нужен какой-то контур. В пример контур круг и закрашивается потом красным
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Canvas.Ellipse(100,100,400,400);
  Canvas.Brush.Color:=clRed;
  Canvas.Brush.Style:=bsSolid;
  Canvas.FloodFill(250,250,ColorToRGB(Color),fsSurface);
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графика.Заполнение замкнутой области. Leshii Паскаль, Turbo Pascal, PascalABC.NET 1 10.10.2011 00:16
Выяснить, принадлежит ли точка с координатами Х, Y замкнутой области, заданной уравнениями. в паскале Bjac@ Помощь студентам 3 09.01.2011 22:27
Проблема с заливкой в С. Salvadore Общие вопросы C/C++ 2 08.04.2010 13:23
Проблема с заливкой DimPF Microsoft Office Excel 1 24.05.2007 11:56