Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.19;
Скачать: CL | DM;

Вниз

создание Regions   Найти похожие ветки 

 
Sergey Kaminski ©   (2004-08-06 14:26) [0]

Пишу специализированный векторный редактор. Второй день бьюсь над принципиальным разрешением такой задачи.
Необходимо получить регионы (Regions, HRGN) графических объектов для проверки «попадания» в них точки функцией PtInRegion.
Для объектов Rectangle, Ellipse, Polygon задача решается просто.

Вопрос: как можно получить координаты описаного полигона (или готовый Region) для объектов «строка», выводимых на DC с заданными параметрыми. Добавлю, что строки могут выводится под углом, с нестандартным межсимвольным расстоянием т.е., не обязательно полученный регион может быть описан структорой Rect. Это может бать и «наклонный прямоугольник".

Пока придумал 2 решения задачи, оба достаточно «кривые».

Посоветуйте какие-нибудь идеи.

Спасибо за внимание.


 
Sergey Kaminski ©   (2004-08-06 14:29) [1]

извините,забыл тэг закрыть, видимо.


 
wicked ©   (2004-08-06 14:39) [2]

решение 1: читаем о path"ах... единственное замечание от меня - далеко не со всеми шрифтами работает....
решение 2: пишем в битмап и переводим его в region...


 
Sergey Kaminski ©   (2004-08-06 14:48) [3]

wicked ©   (06.08.04 14:39) [2]

Через path как раз сейчас и делаю, выходит весьма нехорошо.

По поводу второго решения: примерная схема?

Образец того, что мне нужно получить http://www.sergeykaminski.narod.ru/TextStringImage.jpg
Картинка маленькая, можно смотреть :) Красным закрашено то, что мне нужно получить.


 
Sergey Kaminski ©   (2004-08-06 14:52) [4]

wicked ©   (06.08.04 14:39) [2]

Или вы предлагаете "сканировать" битмап попиксельно, вырезая "прозрачный" прозрачные пикселы из прямоугольного региона посредством CombineRegion? Или что-то другое?


 
wicked ©   (2004-08-06 15:28) [5]

> Sergey Kaminski [4]
именно то... но глядя на картинку, передумал такое советовать... :)
последние 20 минут я усердно искал исходник, поскольку делал такое - екзешка сохранилась.... но увы...
поэтому поясняю на пальцах:
1. находим ширину-высоту строчки - w и h... получим два вектора - vx = (w, 0), vy = (0, h)
2. вертим эти два вектора на необходимый угол... точно не помню, нужно ли менять знак угла - подбирал экспериментально, поскольку не силен в математике... ;)
3. считаем заветные 4 точки:
1-я - опорная точка (pt1), откуда мы строку TextOut"ом выводили,
2-я - pt2 = pt1 + vx,
3-я - pt3 = pt2 + vy,
4-я - pt4 = pt3 - vx
4. строим регион через CreatePolygonRgn....

удач...


 
Sergey Kaminski ©   (2004-08-06 15:37) [6]

wicked ©   (06.08.04 15:28) [5]

Спасибо за доброе участие :)

Да, видимо, никакой стандартной функции для этого дела не приспособить. Воспользуюсь запасным вариантом, который Вы описали. Я его уже начал клепать, потом решил остановиться и "помучать" форумцев ;)

-----------------------------------------------------
Меня смущает вот что. Если вы видели картинку, Windows сама успешно справляется с такой задачей, т.е. подложку цветом текущего Brush закрашивает правильно,под углом. Вот и напрашивалось подозрение, что такой расчет мог быть выведен в какой-нибудь WinAPI. Однако, видимо, пожадничали ;-)

Еще раз спасибо.



Страницы: 1 вся ветка

Текущий архив: 2004.09.19;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.061 c
14-1093882368
undert
2004-08-30 20:12
2004.09.19
Подскажите пожалуйста


3-1092922054
a123
2004-08-19 17:27
2004.09.19
Оракл


3-1092154396
Consider
2004-08-10 20:13
2004.09.19
Unix и виндовые СУБД


14-1094040889
Kurtevich
2004-09-01 16:14
2004.09.19
Просто так...


1-1094187250
Fynjy
2004-09-03 08:54
2004.09.19
OpenGL