рисование дорог
От: $ergi0 Украина  
Дата: 18.06.04 08:29
Оценка:
нужел алгоритм для рисования толстой дороги.
т.е., фактически, преобразования ломаной в полигон заданной толщины, чтоб его потом можно было отобразить апишным Polygon.
есть что-нибудь?
а то у меня постоянно перекрещивания получаются
... << RSDN@Home 1.1.3 stable >>
Re: рисование дорог
От: Анатолий Широков СССР  
Дата: 18.06.04 09:34
Оценка:
Здравствуйте, $ergi0, Вы писали:

E>нужел алгоритм для рисования толстой дороги.

E>т.е., фактически, преобразования ломаной в полигон заданной толщины, чтоб его потом можно было отобразить апишным Polygon.
E>есть что-нибудь?
E>а то у меня постоянно перекрещивания получаются

Наверное, трактовать дорогу так как пытаетесь Вы не совсем правильно. "Толстая" дорога это простанство между земельными участками, на которые разделен город. Она может сужатся, расширяться, проходить через площади, пересекаться с другими дорогами. Поэтому, чтобы решить Вашу задачу правильно, дорогу надо рассматривать изначально не как линейный объект, а как площадный и кодировать его геометрию надо соответствующим образом.
Re: рисование дорог
От: korzhik Россия  
Дата: 18.06.04 09:45
Оценка:
Здравствуйте, $ergi0, Вы писали:

E>нужел алгоритм для рисования толстой дороги.

E>т.е., фактически, преобразования ломаной в полигон заданной толщины, чтоб его потом можно было отобразить апишным Polygon.
E>есть что-нибудь?
E>а то у меня постоянно перекрещивания получаются

    HDC hDC = GetDC( hImage );
    POINT ptArr[10];

    HPEN hOldPen = (HPEN)SelectObject( hDC, 
            CreatePen( PS_GEOMETRIC | PS_SOLID, 5, RGB( 0, 0, 0) ) );

    BeginPath( hDC );
        Polyline( hDC, ptArr, 10 );
    EndPath( hDC );

    WidenPath( hDC );

    DeleteObject( SelectObject( hDC, hOldPen ) );

    SetPolyFillMode( hDC, WINDING );

    hRgn = PathToRegion( hDC );

    FrameRgn(hDC, hRgn, (HBRUSH)GetStockObject(BLACK_BRUSH), 1, 1 );
    
    DeleteObject( SelectObject( hDC, hOldPen ) );

    ReleaseDC( hImage, hDC );
... << RSDN@Home 1.1.4 beta 1 >>
Re[2]: рисование дорог
От: $ergi0 Украина  
Дата: 18.06.04 10:03
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

АШ>Здравствуйте, $ergi0, Вы писали:


E>>нужел алгоритм для рисования толстой дороги.

E>>т.е., фактически, преобразования ломаной в полигон заданной толщины, чтоб его потом можно было отобразить апишным Polygon.
E>>есть что-нибудь?
E>>а то у меня постоянно перекрещивания получаются

АШ>Наверное, трактовать дорогу так как пытаетесь Вы не совсем правильно. "Толстая" дорога это простанство между земельными участками, на которые разделен город. Она может сужатся, расширяться, проходить через площади, пересекаться с другими дорогами. Поэтому, чтобы решить Вашу задачу правильно, дорогу надо рассматривать изначально не как линейный объект, а как площадный и кодировать его геометрию надо соответствующим образом.

я с этим согласен, но дорогу неправильно трактуют другие люди
и мне она попадает в виду ломаной.
без каких-либо признаков широты.
отсюда такой вопрос.
... << RSDN@Home 1.1.3 stable >>
Re[2]: рисование дорог
От: $ergi0 Украина  
Дата: 18.06.04 10:12
Оценка:
Здравствуйте, korzhik, Вы писали:

K>Здравствуйте, $ergi0, Вы писали:


E>>нужел алгоритм для рисования толстой дороги.

E>>т.е., фактически, преобразования ломаной в полигон заданной толщины, чтоб его потом можно было отобразить апишным Polygon.
E>>есть что-нибудь?
E>>а то у меня постоянно перекрещивания получаются

K>
K>    HDC hDC = GetDC( hImage );
K>    POINT ptArr[10];

K>    HPEN hOldPen = (HPEN)SelectObject( hDC, 
K>            CreatePen( PS_GEOMETRIC | PS_SOLID, 5, RGB( 0, 0, 0) ) );

K>    BeginPath( hDC );
K>        Polyline( hDC, ptArr, 10 );
K>    EndPath( hDC );

K>    WidenPath( hDC );

K>    DeleteObject( SelectObject( hDC, hOldPen ) );

K>    SetPolyFillMode( hDC, WINDING );

K>    hRgn = PathToRegion( hDC );

K>    FrameRgn(hDC, hRgn, (HBRUSH)GetStockObject(BLACK_BRUSH), 1, 1 );

K>    DeleteObject( SelectObject( hDC, hOldPen ) );
K>    ReleaseDC( hImage, hDC );
K>

я делал немного проще и просто рисовал толстой линией.
это в WinCE работать не будет. а толстая линия отвратительно выглядит.

пока кроме полигонов больше ничего придумать не могу
... << RSDN@Home 1.1.3 stable >>
Re[3]: рисование дорог
От: korzhik Россия  
Дата: 18.06.04 13:42
Оценка: 3 (1)
Здравствуйте, $ergi0, Вы писали:

E>я делал немного проще и просто рисовал толстой линией.

E>это в WinCE работать не будет. а толстая линия отвратительно выглядит.
если проблема в качестве вывода, то посмотри в сторону www.antigrain.com
чуть позже, если надо, я смогу выслать тебе код который рисует ломаные линии любой толщины с помощью этой библиотеки
и даже можно дорогу рисовать битмапным шаблоном.
... << RSDN@Home 1.1.4 beta 1 >>
Re[4]: рисование дорог
От: $ergi0 Украина  
Дата: 18.06.04 14:18
Оценка:
Здравствуйте, korzhik, Вы писали:

K>Здравствуйте, $ergi0, Вы писали:


E>>я делал немного проще и просто рисовал толстой линией.

E>>это в WinCE работать не будет. а толстая линия отвратительно выглядит.
K>если проблема в качестве вывода, то посмотри в сторону www.antigrain.com
K>чуть позже, если надо, я смогу выслать тебе код который рисует ломаные линии любой толщины с помощью этой библиотеки
K>и даже можно дорогу рисовать битмапным шаблоном.
буду очень благодарен
... << RSDN@Home 1.1.3 stable >>
Re: рисование дорог
От: aka50 Россия  
Дата: 18.06.04 14:41
Оценка: 15 (3)
Здравствуйте, $ergi0, Вы писали:

E>нужел алгоритм для рисования толстой дороги.

E>т.е., фактически, преобразования ломаной в полигон заданной толщины, чтоб его потом можно было отобразить апишным Polygon.
E>есть что-нибудь?
E>а то у меня постоянно перекрещивания получаются


смотреть вот тут

http://www.vterrain.org/Culture/Roads/index.html
Re[5]: рисование дорог
От: korzhik Россия  
Дата: 19.06.04 15:18
Оценка: 3 (1)
Здравствуйте, $ergi0, Вы писали:

ну вот в общем здесь картинка того что получается,
а здесь исходники.
Для компиляции естественно надо скачать antigrain.
... << RSDN@Home 1.1.4 beta 1 >>
Re[6]: рисование дорог
От: korzhik Россия  
Дата: 19.06.04 15:22
Оценка:
Здравствуйте, korzhik, Вы писали:

K>Здравствуйте, $ergi0, Вы писали:


K>ну вот в общем здесь картинка того что получается,

K>а здесь исходники.
K>Для компиляции естественно надо скачать antigrain.

комментарии к картинке:
левая часть это ломаныи линии разной толщины,
а правая это ломаные линии нарисованные битмапным шаблоном
... << RSDN@Home 1.1.4 beta 1 >>
Re[7]: рисование дорог
От: $ergi0 Украина  
Дата: 19.06.04 17:09
Оценка:
Здравствуйте, korzhik, Вы писали:

K>Здравствуйте, korzhik, Вы писали:


K>>Здравствуйте, $ergi0, Вы писали:


K>>ну вот в общем здесь картинка того что получается,

K>>а здесь исходники.
K>>Для компиляции естественно надо скачать antigrain.

K>комментарии к картинке:

K>левая часть это ломаныи линии разной толщины,
K>а правая это ломаные линии нарисованные битмапным шаблоном
огромное спасибо.
красиво получается, я даже волноваться начал, что в WinCE работать не будет.
пошел тестить.
Re[8]: рисование дорог
От: McSeem2 США http://www.antigrain.com
Дата: 19.06.04 20:20
Оценка:
E>красиво получается, я даже волноваться начал, что в WinCE работать не будет.
E>пошел тестить.
Под WinCE работать будет. http://antigrain.com/tips/win_ce/win_ce.agdoc.html
Должно, во всяком случае
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[9]: рисование дорог
От: Аноним  
Дата: 21.06.04 18:48
Оценка:
Здравствуйте, McSeem2, Вы писали:

E>>красиво получается, я даже волноваться начал, что в WinCE работать не будет.

E>>пошел тестить.
MS>Под WinCE работать будет. http://antigrain.com/tips/win_ce/win_ce.agdoc.html
MS>Должно, во всяком случае

спасибо. действительно работает
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.