XNA рисует / рисует на Texture2D во время выполнения - PullRequest
10 голосов
/ 20 июля 2011

Утро всем (если это утро, где вы находитесь)

Я искал вокруг и не видел удовлетворительного метода для этого, поэтому думал, что я бы спросил ...

ИдеальноМир Я хотел бы иметь возможность генерировать прозрачный объект Texture2D.Рисуя это на экране, я хотел бы иметь возможность «рисовать» на нем, то есть когда левая кнопка мыши нажата, какой бы пиксель не был наведен, курсор должен быть установлен в черный цвет.После этого мне понадобится использовать эту текстуру.

Использование текстуры - это простая часть, мы можем просто создать новый атрибут Texture2D для объекта рисования и использовать его в SpriteBatch.Draw.метод.Две хитрые части:

  1. Генерация объекта texture2D указанного размера, заполненного прозрачностью в коде.
  2. Редактирование этой texture2D на лету (т.е. возможность изменять цвета пикселей)

Если у кого-либо из них есть какой-либо опыт, вы очень оцените его.

1 Ответ

14 голосов
/ 20 июля 2011

Вы можете использовать RenderTarget2D ( MSDN ), что само по себе Texture2D (так что вы можете использовать его в SpriteBatch.Draw).Это позволяет вам визуализировать текстуру так же, как вы делаете это на экране.Вам нужно использовать GraphicsDevice.SetRenderTarget ( MSDN ), чтобы настроить это.

Или вы можете использовать Texture2D.SetData ( MSDN ) для прямой манипуляции пикселями.Вы можете создать прозрачный Texture2D напрямую ( MSDN ).Не забудьте Dispose о любых текстурах или других ресурсах, которые вы создаете сами!

...