Здравствуйте, Melamed, Вы писали:
M>Есть регион произвольной формы. Необходимо по периметру его нарисовать 3D рамку, чтоб он казался на экране выпуклый. M>Заранее благодарен
Рисуешь несколько раз разной толщиной пера и с градиентом цвета
Re[2]: Как нарисовать по периметру региона 3D рамку?
Здравствуйте, Hоmunculus, Вы писали:
H>Здравствуйте, Melamed, Вы писали:
M>>Есть регион произвольной формы. Необходимо по периметру его нарисовать 3D рамку, чтоб он казался на экране выпуклый. M>>Заранее благодарен
H>Рисуешь несколько раз разной толщиной пера и с градиентом цвета
А можешь пример тут привести?
Re[2]: Как нарисовать по периметру региона 3D рамку?
Здравствуйте, Hоmunculus, Вы писали:
M>>Есть регион произвольной формы. Необходимо по периметру его нарисовать 3D рамку, чтоб он казался на экране выпуклый. M>>Заранее благодарен
H>Рисуешь несколько раз разной толщиной пера и с градиентом цвета
И лучше через GDI+, через GDI оно будет как дерьмо выглядеть
Здравствуйте, Marty, Вы писали:
M>Здравствуйте, Melamed, Вы писали:
H>>>Рисуешь несколько раз разной толщиной пера и с градиентом цвета M>>А можешь пример тут привести?
M>А курсовую за тебя не сдать?
Да лан. Помню зарегался на форуме из-за таких же дебильных вопросов по MFC лет пятьсот назад. Мне SchweinDeBurg терпеливо отвечал. До сих пор ему благодарен.
Re[5]: Как нарисовать по периметру региона 3D рамку?
Здравствуйте, Hоmunculus, Вы писали:
H>Да лан. Помню зарегался на форуме из-за таких же дебильных вопросов по MFC лет пятьсот назад. Мне SchweinDeBurg терпеливо отвечал. До сих пор ему благодарен.
Здравствуйте, Hоmunculus, Вы писали:
H>Это просто для понимания. Это не код. H>Рамка будет немного серой и плавно темнеть к самому контуру
Только толщину не надо менять, если GDI — взять толщину пена в два пикселя, чтобы гарантировано покрывать пиксельные артефакты, и шпарить с шагом в пиксель. Последний шаг сделать однопиксельной ручкой.
Если брать ручку разной толщины, то это просто лишняя работа для GDI, которая на следующем шаге почти вся будет затираться
Здравствуйте, Marty, Вы писали:
H>>Рисуешь несколько раз разной толщиной пера и с градиентом цвета
M>И лучше через GDI+, через GDI оно будет как дерьмо выглядеть
Я так рисую градиент циркуль, весь круг рисую через GDI, а потом рамку через GDI+, в итоге получается вполне приятно и довольно быстро.
ЗЫ Хотя собаководы вроде не рекомендуют смешивать GDI и GDI+ на одном драв контексте, у меня всё работает (ну, и у тех немногих, кому давал поюзать результат — тоже. Будут проблемы — буду решать).
Здравствуйте, Marty, Вы писали:
M>ЗЫ Хотя собаководы вроде не рекомендуют смешивать GDI и GDI+ на одном драв контексте, у меня всё работает (ну, и у тех немногих, кому давал поюзать результат — тоже. Будут проблемы — буду решать).
Ну это с точки зрения кода некрасиво. Все равно что половину рисовать на OpenGL, а текст, например, через GDI. Работать будет. Но все стараются так не делать
Re[5]: Как нарисовать по периметру региона 3D рамку?
Здравствуйте, Hоmunculus, Вы писали:
M>>ЗЫ Хотя собаководы вроде не рекомендуют смешивать GDI и GDI+ на одном драв контексте, у меня всё работает (ну, и у тех немногих, кому давал поюзать результат — тоже. Будут проблемы — буду решать).
H>Ну это с точки зрения кода некрасиво.
Очень даже красиво. У меня было две отдельных обёртки — над GDI и над GDI+. GDI довольно шустро, но и довольно говёно выглядит. GDI+ выглядит найс, но зело тормоз, и шрифты там рисуются гораздо хуже, чем в простом GDI.
У GDI+ вроде есть флаги, отвечающие за скорость/качество отрисовки, но я что-то не понял, они похоже вообще ни на что не влияют. В итоге, я сделал MultiDC, в котором лежат две обертки, и уже по моему флагу переключаются. В итоге получилось достичь баланс качества отрисовки и скорости отрисовки, управляемый пользователем. Бонусом идёт то, что если я захожу переехать на SDL какой-нибудь, мне не надо будет переписывать весь код, достаточно переписать обёртку.
H>Все равно что половину рисовать на OpenGL, а текст, например, через GDI. Работать будет. Но все стараются так не делать
Нормально. Если шрифты на OpenGL выглядят как говно, то рисовать их будут через GDI. Все так делают. Это жизнь. А кто так не делает, и блюдёт чистоту и красоту, оказываются на помойке.
Здравствуйте, Marty, Вы писали:
M>А кто так не делает, и блюдёт чистоту и красоту, оказываются на помойке.
Ну, пока не оказался
Правда я такой низко-уровневой графикой и только под Винду лет сто не занимался. На кросс-платформе давно. Кстати, еще один минус вывода графики так как это делаешь ты
Re[7]: Как нарисовать по периметру региона 3D рамку?
Здравствуйте, Hоmunculus, Вы писали:
H>Ну, пока не оказался
Ты, скорее всего, делаешь не массовый продукт
H>Правда я такой низко-уровневой графикой и только под Винду лет сто не занимался. На кросс-платформе давно. Кстати, еще один минус вывода графики так как это делаешь ты
Кому минус, а кому и плюс. GDI я довольно хорошо знаю, с GDI+ тоже дело имел, а SDL надо с нуля разбираться (это плюс несколько месяцев, или быстрее, но тогда всё будет плотно завязано на SDL), а если SDL не прокатит потом, но куча кода уже написана, то только страдать. А если есть прокладка в виде ещё одного уровня абстракции, то тут можно хоть как-то накостылить, если что-то пошло не так.
И да, продукт у меня кроссплатформа, хотя пока только под винду. Но в пределе я думаю и веб ассемблю сделать
Здравствуйте, Marty, Вы писали:
M>Здравствуйте, Hоmunculus, Вы писали:
M>>>Есть регион произвольной формы. Необходимо по периметру его нарисовать 3D рамку, чтоб он казался на экране выпуклый. M>>>Заранее благодарен
H>>Рисуешь несколько раз разной толщиной пера и с градиентом цвета
M>И лучше через GDI+, через GDI оно будет как дерьмо выглядеть
К сожалению я не работал с GDI+, но работал с DirectX D2. Думаю, используя его осуществить задуманное. Правда это требует минимум Windows 8.1
Здравствуйте, Melamed, Вы писали:
M>Есть регион произвольной формы. Необходимо по периметру его нарисовать 3D рамку, чтоб он казался на экране выпуклый. M>Заранее благодарен
Здравствуйте, CEMb, Вы писали:
CEM>Здравствуйте, Melamed, Вы писали:
M>>Есть регион произвольной формы. Необходимо по периметру его нарисовать 3D рамку, чтоб он казался на экране выпуклый. M>>Заранее благодарен
CEM>DrawEdge