Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 28.11.2014
Сообщений: 17

Не правильно работает функция для заливки цветом, для Paint

26.05.2016, 22:15. Показов 1667. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Помогите пожалуйста с функцией заливки для паинт. Проблема такая, когда цвет заменяемого пикселя совпадает с цветом пикселя на который нужно заменить, моя функция почему то не делает проверку на совпадение цветов, и бесконечно заменяет один и тот же цвет и программа зависает. bmp.GetPixel(X, Y) != replacecolor - проверка на совпадение цвета пикселя который нужно заменить со цветом пикселя на который нужно заменить, но программа почему то не видит его. Как это исправить? помогите пожалуйста)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public void FloodFill(Point pnt, Bitmap bmp, Color targetcolor, Color replacecolor, PictureBox pb)
            {
                    Stack<Tuple<int, int>> stack = new Stack<Tuple<int, int>>();
                    stack.Push(Tuple.Create(pnt.X, pnt.Y));
 
                    while (stack.Count != 0 && bmp.GetPixel(pnt.X, pnt.Y) != replacecolor)
                    {
                        var next = stack.Pop();
                        int X = next.Item1;
                        int Y = next.Item2;
 
                        if (X >= 0 && Y >= 0 && X < pb.Image.Width && Y < pb.Image.Height && 
                        bmp.GetPixel(X, Y) == targetcolor && bmp.GetPixel(X, Y) != replacecolor)
                        {
                            bmp.SetPixel(X, Y, replacecolor);
                            stack.Push(Tuple.Create(X, Y + 1));
                            stack.Push(Tuple.Create(X, Y - 1));
                            stack.Push(Tuple.Create(X + 1, Y));
                            stack.Push(Tuple.Create(X - 1, Y));
                        }
                    }
            }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.05.2016, 22:15
Ответы с готовыми решениями:

Алгоритм заливки экрана цветом работает крайне медленно
Недавно начал изучать с++ и для того что бы залить одним цветом весь экран я использую такой цикл for (int index_Y = 0; index_Y &lt;...

Не правильно работает функция SUM для ADOQuery
Подсчитываю сумму одинаковых таможнь, а в таблицу выводит только таможни, но по 1 разу, а второе поле пустое... второе поле которое...

Не правильно работает функция GetSubstring для русского текста
Не правильно работает функция GetSubstring. Подскажи пожалуйста в чём причина. #include &lt;stdio.h&gt; #include &lt;Windows.h&gt; ...

2
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
26.05.2016, 22:25
ilgizon, даже если вы все правильно напишите, то из-за медленных GetPixel/SetPixel все равно все зависнет. Более быстрых вариантов полно по форуму, используемый когда-то мной выложен тут.
1
0 / 0 / 0
Регистрация: 28.11.2014
Сообщений: 17
27.05.2016, 00:07  [ТС]
Спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.05.2016, 00:07
Помогаю со студенческими работами здесь

Cisco 1941 не работает команда xmodem для заливки IOS
Всем доброго времени суток! у меня cisco 1941, утром прихожу, включаю а там пишет: Rommon X&gt; ... рылся где только мог, но никаких...

Отображение ластика в графическом редакторе (типа paint) не правильно работает
Отображение ластика в графическом редакторе (типа paint) не правильно работает. При выборе ластика (и при подведении к рисунку) не видны...

Управлять цветом заливки у стандартного компонента
Доброго времени суток! Подскажите, как проще всего &quot;научить&quot; CheckBox изменять цвет заливки ? Например вот так Понятно что нужно...

Программный поиск заливки цветом в документах WORD
Доброго времени суток! Можно ли программно(макросом) найти в документе WORD произвольные фрагменты текста выделенные заливкой конкретным...

Не правильно работает код для рекламы
Всем привет! Есть код, который показывает кнопку только после клика по баннеру. НО... Есть и недостаток, т.к кнопка появляется и тогда,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru