Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Разукрашка на VB Добавлено: 06.01.04 12:46  

Автор вопроса:  Smith | Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой. | ICQ: ненавижу 

Хочу своей дочурке сделать разукрашку. Я знаю что существует множество готовых программ, но я хочу сам её изготовить. Чтобы в любой момент можно было подключить к проге любой графический файл.

Как в VB залить каким либо цветом участок картинки, ограниченный другим цветом (как в Paint)? Какой нужен для этого контрол?

Ответить

  Ответы Всего ответов: 16  

Номер ответа: 1
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #1 Добавлено: 06.01.04 13:07

В QBasic'e была такая функция как Point, которая закрашивала все как ты сказал.

Синтаксис функции забыл...

Ответить

Номер ответа: 2
Автор ответа:
 Smith



ICQ: ненавижу 

Вопросов: 28
Ответов: 317
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #2
Добавлено: 06.01.04 13:32

Это я знаю, только по моему Paint, а Point – это определение цвета точки, но это не важно. В VB определить цвет точки можно, а залить не получается. Можно только нарисовать круг, овал квадрат и т.д. пустой или закрашенный, а вот  произвольные области никак. Думаю без спецконтрола не обойтись.

Может в Delphi есть что-то приемлемое, кто сталкивался с таким?

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 06.01.04 14:51

Paint

Ерунда, никаких Delphi. Все замечательно делается на VB. Все, что для этого надо - волновой алгоритм. (На Delphi тем более, он там еще сложнее будет). Если не в курсе, могу рассказать и даже примерчик выложить.

2Admins: нужен пример демонстрации волнового алгоритма?

Ответить

Номер ответа: 4
Автор ответа:
 crackoff



ICQ: 156165990 

Вопросов: 12
Ответов: 229
 Профиль | | #4 Добавлено: 06.01.04 15:09

Гемор, конечно, но попробуй юзать API FillRgn.

Ща, еще потыкаюсь, может че умное и скажу

Ответить

Номер ответа: 5
Автор ответа:
 crackoff



ICQ: 156165990 

Вопросов: 12
Ответов: 229
 Профиль | | #5 Добавлено: 06.01.04 15:26

Нашел! Есть API BOOL FloodFill( int x, int y, COLORREF crColor )

Она делает как раз то, что надо.

Ответить

Номер ответа: 6
Автор ответа:
 crackoff



ICQ: 156165990 

Вопросов: 12
Ответов: 229
 Профиль | | #6 Добавлено: 06.01.04 15:35

Сорри, вот как все это работает:

1. Кидаем пикчубокс (Pic1) и две кнопки (Command1 и Command2)

2. В коде

Private Declare Function FloodFill Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long

Private Sub Command1_Click()

Pic1.ScaleMode = 3 'pixel

Pic1.Line (10, 10)-(10, 50), 0

Pic1.Line -(60, 70), 0

Pic1.Line -(20, 50), 0

Pic1.Line -(80, 30), 0

Pic1.Line -(10, 10), 0

End Sub

Private Sub Command2_Click()

Pic1.FillStyle = 0 ' Выбираем кисть

FloodFill Pic1.hdc, 25, 25, 0 'Закрашиваем

End Sub

Ответить

Номер ответа: 7
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #7
Добавлено: 06.01.04 15:38
Если свой, а не ворованный, то кидай, выложим с удовольствием.

Ответить

Номер ответа: 8
Автор ответа:
 NeForm@t



ICQ: 252999255 

Вопросов: 36
Ответов: 247
 Web-сайт: g--k.newmail.ru
 Профиль | | #8
Добавлено: 06.01.04 15:49

Только маленький(ОГРОМНЫЙ) ньюанс: если что-нибудь закрасить, а потом нажать на другую форму, чтоб та перекрыла эту, а потом опять посмотреть на рисунок.....

о мля все труды дочки пропали в мастдае...

Ответить

Номер ответа: 9
Автор ответа:
 NeForm@t



ICQ: 252999255 

Вопросов: 36
Ответов: 247
 Web-сайт: g--k.newmail.ru
 Профиль | | #9
Добавлено: 06.01.04 15:53

а вот и решение:

pic1.autoredraw=true

и после каждого деётвия c pic1 надо ставить pic1.refrech!!!!!!

Ответить

Номер ответа: 10
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #10
Добавлено: 06.01.04 16:34

2TheOne - надо при рисовании делать pic.autoredraw=true, рисовать, а потом pic.autoredraw=false (или наоборот :) )

2Павел: [ПОЗА]Я примеры не ворую![/ПОЗА] Я их просто изменяю до неузнаваемости и хорошенько оформляю :). А без приколов - где можно своровать исходник закрашивания волновым алгоритмом? Они обычно на паскале пишутся, без всяких примеров...

2Славик: "Хочу своей дочурке сделать разукрашку. Я знаю что существует множество готовых программ, но я хочу сам её изготовить." - Я растроган! Аж слезы на глаза наворачиваются (а может это от холода, мы окна в общаге не заклеили :) ). Ну почему мне в детстве никто не писал игрушки на БК0010???

Пример сейчас кину (если найду, хе-хе...)

Ответить

Номер ответа: 11
Автор ответа:
 Smith



ICQ: ненавижу 

Вопросов: 28
Ответов: 317
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #11
Добавлено: 07.01.04 13:56

А я и на БК0010 писал игрушки, только у меня это получалось гораздо лучше чем на VB.

Спасибо за помощь, пока все работает. Будут проблемы снова обращусь к вам. Как только закончу прогу обязательно закину её в бета-тест, может еще чего придумаем. 

На самом деле я собираюсь написать не только разукрашку, еще планируется изготовить красочные обучалки математике, чтению и пр. и ко всему этому приляпаю 700 мегов детских песенок в Мр3.

Ответить

Номер ответа: 12
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #12
Добавлено: 07.01.04 14:40

Руль. Тогда можно будет болванки нарезать... "Программы для самых маленьких"... нигде такое не видел.

Ответить

Номер ответа: 13
Автор ответа:
 Smith



ICQ: ненавижу 

Вопросов: 28
Ответов: 317
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #13
Добавлено: 07.01.04 14:53

Нарезать то можно, а как 700 Мб пересылать?

Да, и еще, не думайте, что завтра все будет готово. Я человек очень занятой, так что работа может затянуться на месяц и более (если еще и украшать все по уму).

Чур никому не повторять, обвиню в плагиате ;)

Ответить

Номер ответа: 14
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #14
Добавлено: 07.01.04 15:01

700 метров пересылать по почте. На болванке.

Ответить

Номер ответа: 15
Автор ответа:
 Smith



ICQ: ненавижу 

Вопросов: 28
Ответов: 317
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #15
Добавлено: 08.01.04 07:41
Я из Казахстана. Пересылать будет накладно. Даже если и вышлю что дальше? "Программы для самых маленьких" в тираже - это замечательно, а кто деньги будет собирать?

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам