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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2021, 15:21   #1
shkolnik45
Пользователь
 
Регистрация: 16.04.2021
Сообщений: 19
По умолчанию Зарисовка фигуры

Добрый день. Помогите пожалуйста. Задача такая: при одном нажатии часть круга (до границы) закрашивается в зеленый цвет (скрин 1,2) (если до этого был белый), при повторном нажатии снова закрашивается белым. Проблема в том, что при первом нажатии на область круга она закрашивается в зеленый, а при повторном нажатии ничего не происходит до тех пор, пока я не закрашу область за пределами круга.(скрин 3)



Код:
procedure TForm1.Image2MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
 var
pt2:tPoint;
a:integer;
i,j:byte;
begin
pt2:=Mouse.CursorPos;
pt2 := ScreenToClient(pt2);
a:=GetPixel(Image2.Canvas.Handle, i, j);
Label9.Caption := inttostr(GetPixel(Image2.Canvas.Handle, i, j));
 if a  = 16777215
 then begin image2.Canvas.Brush.Color:=clgreen;
      Image2.Canvas.FloodFill(pt2.x-24,pt2.y-144,clblack,fsborder);     end;
       if a = 32768
          then  begin image2.Canvas.Brush.Color:=clwhite;
           Image2.Canvas.FloodFill(pt2.x-24,pt2.y-144,clblack,fsborder); end;
end;
Изображения
Тип файла: png рис1.png (4.0 Кб, 55 просмотров)
Тип файла: png рис2.png (3.9 Кб, 57 просмотров)
Тип файла: png рис3.png (4.0 Кб, 58 просмотров)
shkolnik45 вне форума Ответить с цитированием
Старый 16.05.2021, 20:43   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Потому что точка старта закрашивания привязана к CursorPos, а цвет пикселя берется по координатам i и j, которые вообще не инициализированы. Во-вторых, а нужно ли так сложно доставать координаты клика, разве аргументы X, Y не подойдут?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 16.05.2021, 23:04   #3
shkolnik45
Пользователь
 
Регистрация: 16.04.2021
Сообщений: 19
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Потому что точка старта закрашивания привязана к CursorPos, а цвет пикселя берется по координатам i и j, которые вообще не инициализированы. Во-вторых, а нужно ли так сложно доставать координаты клика, разве аргументы X, Y не подойдут?
А не могли бы вы подсказать, как лучше сделать. Очень плохо в этой теме разбираюсь.
shkolnik45 вне форума Ответить с цитированием
Старый 16.05.2021, 23:15   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
procedure TForm1.img1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  with (Sender as TImage) do
  begin
    if Canvas.Pixels[X, Y] = clWhite then
      Canvas.Brush.Color := clGreen
    else
      Canvas.Brush.Color := clWhite;
    Canvas.FloodFill(X, Y, clBlack, fsBorder);
  end;
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 17.05.2021, 14:55   #5
shkolnik45
Пользователь
 
Регистрация: 16.04.2021
Сообщений: 19
По умолчанию

BDA, Спасибо вам большое)
shkolnik45 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Код, вычисляющей длину линии вертикального разреза фигуры, значения площадей фигуры слева и справа от линии разреза, по значениям аргумента, введенного с консоли nertex Помощь студентам 21 22.09.2019 12:13
Зарисовка шариков HeLLiSH Общие вопросы Delphi 6 22.06.2012 10:10
Движение одной фигуры,вслед изменения высоты другой фигуры. 7vlad37 Microsoft Office Excel 3 21.07.2011 18:01
Фигуры Арнис Фриланс 4 25.01.2011 13:05
Зарисовка формы beemoto Общие вопросы Delphi 5 04.04.2010 20:49