Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Fillpolygon, VB


Автор: diostm 29.1.2010, 22:44
В данный момент читаю Ч. Петцольда, "Как программировать для Microsoft Windows на Visual Basic .NET". Дошел до конца раздела с графикой. Не могу понять, при каких условиях будет закрашиваться часть фигуры, а при каких не будет?

На рисунке фигура слева создана с помощью
Код

grfx.FillPolygon(br, apt, FillMode.Alternate)


фигура справа:

Код

grfx.FillPolygon(br, apt, FillMode.Winding)


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

Автор: Sfate 29.1.2010, 23:04
внимательно читаем http://msdn.microsoft.com/ru-ru/library/system.drawing.drawing2d.fillmode(en-us,VS.71).aspx
вчастности отличия между Alternate и Winding

Автор: diostm 29.1.2010, 23:44
К сожалению мой английский слишком слаб(учил в школе немецкий) :(
=====
Отрывок из Петцольда:
Цитата

Обычно в режиме winding закрашиваются все замкнутые области. Но не все-
гда все так просто — есть и ряд исключений. Чтобы определить, будет ли закра-
шена область в режиме winding, мысленно проведите прямую из любой точки этой
области в бесконечность, Если воображаемая линия пересекает нечетное число
границ, область закрашивается (так же, как в режиме alternate). Если же вообра-
жаемая линия пересекает четное число границ, то область может быть закраше-
на, а может остаться и свободной. Такая область закрашивается, если число гра-
ничных линий, направленных по часовой стрелке, не равно числу линий, направ-
ленных против часовой стрелки.


Что понимается под словом "граиница"?
Под "число граничных линий" ?
Под "направленных по часовой стрелке"? Это какое направление? Право/низ/верх/лево?

Автор: Sfate 30.1.2010, 01:51
в моем понимании... метод Winding закрашивает замкнутую фигуру... а метод Alternate с каким то перекрытием (каким точно я хз)...

Автор: diostm 30.1.2010, 02:45
в том-то вся и беда, что нужны нюансы и точное понимание того что и как работает :(

Автор: diadiavova 30.1.2010, 11:53
http://msdn.microsoft.com/ru-ru/library/system.drawing.drawing2d.fillmode.aspx

Автор: diostm 30.1.2010, 12:35
спасибо, что еще раз ткнули в мсдн. ответов, увы не прибавилось :(

Автор: diadiavova 30.1.2010, 13:40
Цитата(diostm @  30.1.2010,  12:35 Найти цитируемый пост)
спасибо, что еще раз ткнули в мсдн

Это был ответ на это
Цитата(diostm @  29.1.2010,  23:44 Найти цитируемый пост)
К сожалению мой английский слишком слаб(учил в школе немецкий) :(

 smile 

Автор: diostm 30.1.2010, 13:47
diadiavova, нет, нет, доктор Зло, не надо smile
П.С.  smile 

Автор: diadiavova 30.1.2010, 13:53
diostm, я этим не пользовался, но гуголь вполне находит примеры по запросу
http://www.google.ru/search?hl=ru&rlz=1B3GGGL_ruRU325RU325&newwindow=1&q=FillMode+%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=&aq=f&oq=

Вот этот, скажем, чем плох?

http://www.codenet.ru/progr/delphi/stat/regions/

Добавлено через 1 минуту и 6 секунд
Там на примере со звездой даже без пояснений понятно всё.

Автор: diostm 30.1.2010, 21:33
Только вот немного непонятно следующее:
Слева Fillmode: Alternate
Слева Fillmode: Winding

Не понимаю, почему не закрашивается область внутренняя на правой фигуре на рисунке...

Автор: Sfate 31.1.2010, 16:30
diostm, стучимся к мелкомягким в суппорт...

Автор: diostm 31.1.2010, 18:13
Sfate, а этот раздел называется не помощь новичкам в .НЕТ
П.С. Если по существу нечего было сказать, то можно было и воздержаться от реплики smile

Автор: Sfate 31.1.2010, 22:49
Цитата(diostm @  31.1.2010,  18:13 Найти цитируемый пост)
Sfate, а этот раздел называется не помощь новичкам в .НЕТ
да так...


Цитата(diostm @  31.1.2010,  18:13 Найти цитируемый пост)
П.С. Если по существу нечего было сказать, то можно было и воздержаться от реплики 
ммм... помоему... реплика очень содержательна и несет много смысла... т.к. только мелкомягкие несут тот кладязь знаний... которые мы пытаемся понять...
если серьезно... из двух приведенных Вами примеров (изображения в 1м и 11м постах) можно понять, в кратце принцип работы:
FillMode.Alternate - при рисовании самопересекающихся замкнутых сплайнов будут чередоваться закрашенные и не закрашенные области... 
FillMode.Winding - большинство замкнутых областей будет закрашено...

Автор: diostm 31.1.2010, 23:28
Sfate, ну вот мне и интересно, в каких случаях при FillMode.Winding области(и какие именно) будут закрашены, то есть другими словами, как определить будет ли какая-то область закрашена или останется не закрашенной при FillMode.Winding

Автор: diostm 2.2.2010, 21:18
up

Автор: diostm 6.2.2010, 00:42
ap

Автор: diadiavova 6.2.2010, 00:46
Что ап то? Нарисуй многоугольник с непересекающимися линиями и проблемы не будет. Сможешь полностью сам контролировать что закрасится, а что нет.

Автор: diostm 6.2.2010, 16:50
Все ясно, нюансов я тут не найду smile

Автор: Sfate 6.2.2010, 20:51
diostm, о чем тебе и было написано раньше smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)