Если вы используете 16x16 изображения, то размер ячейки должен 16 × 16. Но если вы хотите рисовать изображение 64x64 в ячейке 16x16, вы должны масштабировать изображение до 16x16, но в этом случае не будет разницы между исходными изображениями 64x64 и 16x16. Или сделайте ячейки 64x64 пикселей.
Что касается масштабирования, вы можете использовать только целую шкалу, например, 2x, 3x и так далее. Не допускайте нецелого масштаба, чтобы избежать искажения изображения.
SpriteBatch.Draw имеет overloads. Для масштабирования изображения, как вы хотите, вы можете использовать перегрузку 1, 2 или 3 с назначением прямоугольника в качестве второго параметра:
SpriteBatch.Draw(
tileTexture,
new Rectange(x * TileWidth, y * TileHeight, TileWidth, TileHeight),
Color.White);
Исходного изображения будет тянущимся прямоугольник.
Или вы можете использовать на два последних перегрузок в масштаб изображения
SpriteBatch.Draw(
tileTexture,
new Vector2(x * TileWidth * scaleX, y * TileHeight * scaleY),
null,
Color.White,
0,
Vector2.Zero,
new Vector2(scaleX, scaleY),
SpriteEffects.None,
0);
Кроме того, если вам просто нужно заполнить фон с одной же плитками можно назвать SpriteBatch начать Митос с любой оберткой SemplerState paramether (PointWrap лучше, для меня) и нарисуйте черепицу примерно так: SpriteBatch.Draw ( tileTexture, новый Rectange (0, 0, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height), Color.White);
Был ли TileWidth и TileHeight такими же, как реальная ширина и высота изображения? –
@ Сильвер Нет. Может быть, я делаю это неправильно. Но когда я делал это раньше, у меня был образ 16x16. И я хочу, чтобы игрок мог увеличить число плиток. Но так как 16,16 настолько мала, что изображение будет выглядеть очень неровным и плохим. Поэтому я подумал, что лучше использовать изображение с более высоким разрешением и просто масштабировать его, поэтому, когда они будут увеличиваться, это будет выглядеть отлично. Разве это не способ сделать это? – ernest