Как нарисовать пунктирную линию в MonoGame/XNA

Как проще всего нарисовать пунктирную линию в MonoGame/XNA 4?

Должен ли я использовать 3D-примитивы или я могу добиться этого с помощью простого спрайта?


person adrin    schedule 11.03.2013    source источник


Ответы (3)


Пользователь C3 на bitbucket опубликовал хороший служебный класс для создания 2D-примитивов. Они добавляют методы расширения к классу SpriteBatch. Репозиторий находится здесь: https://bitbucket.org/C3/2d-xna-primitives/wiki/Home


Добро пожаловать

Добро пожаловать в новый дом проекта 2D XNA Primitives, который теперь использует репозиторий Mercurial на Bitbucket! Теперь совместим с Windows Phone.

Справочник по функциям

Все общедоступные методы, предоставляемые этой библиотекой, являются методами расширения, что означает, что вы можете обращаться к ним напрямую через свой собственный экземпляр SpriteBatch, как если бы эти методы были встроенными в класс SpriteBatch. Если вы вызываете методы таким образом, вы можете игнорировать первый параметр всех следующих вызовов.

Общедоступные методы

DrawArc

DrawCircle

DrawLine

рисоватьпрямоугольник

ЗаполнитьПрямоугольник

Поставить пиксель

person borrillis    schedule 19.03.2013

Если это прямая линия (с простыми поворотами на 90 градусов), то спрайт, вероятно, будет самым простым.

(Если у вас есть доступ к пользовательским шейдерам через профиль HiDef, то получить пунктирные линии в шейдерах не так уж сложно, если не усложнять свои потребности)

Если он скручивается и поворачивается нерегулярно, я бы предложил использовать 3D-примитивы.

person lzcd    schedule 11.03.2013
comment
Спасибо! Я не уверен, как я могу нарисовать пунктирную линию спрайтом. Есть ли способ обрезать нарисованный спрайт (иметь одну длинную линию и обрезать ее соответственно?) Или мне нужно рисовать несколько спрайтов (по одному на сегмент) и повторять их (кажется неоптимальным?) - person adrin; 12.03.2013
comment
Мне приходят в голову два варианта: иметь полностью белый спрайт и многократно рисовать его с интервалом ... или иметь один спрайт с одним или несколькими пробелами в текстуре и масштабировать с текстурой, установленной для переноса. - person lzcd; 13.03.2013

Разбейте проблему на две части.

1) Определите форму кривой, если это не прямая линия.

2) Вдоль этой кривой создайте треугольную полосу с текстурой, которую вы хотите видеть в виде пунктирной линии.

person GorillaOne    schedule 19.01.2015