Это было некоторое время назад, поэтому, возможно, не очень полезно первоначальному человеку, который сделал запрос.Но у вас есть три варианта.Одним из них является использование Draw (Texture2D, Rectangle, ...) вместо Draw (Texture2D, Vector2 ...).Vector2 просто устанавливает координаты x и y, поэтому, если вы измените размер с помощью этого метода, вы измените размер спрайта в целом.Прямоугольник содержит значения X, Y и отдельные значения высоты и ширины, поэтому с помощью прямоугольника можно изменить размер вдоль одной оси.У вас все еще будет проблема с концами, но это можно исправить, рассматривая концы как отдельные спрайты.Я использую этот метод для границ переменного размера.
Второй, который будет работать в случае простого спрайта, как вы описываете, - это создание текстуры во время выполнения.Создайте новый Texture2D нужного размера, затем создайте массив цветов, достаточно большой, чтобы покрыть каждый пиксель, и назначьте этот массив, используя .SetData (Color []).С этим связано немало вычислительных затрат, но я использовал его для выделения ограничивающего прямоугольника переменного размера во время выполнения, поэтому он работает нормально.
Конечно, опция примитивов тоже выглядит хорошо.:)