You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MonoGame如何调整已加载图片的缩放比例?

MonoGame 2D纹理缩放实现方法

你当前使用的是SpriteBatch.Draw的最简重载,仅支持指定纹理、绘制位置和着色颜色,不支持缩放配置,要通过缩放系数调整图片大小可以使用带缩放参数的重载,操作步骤如下:

  • 第一步:在游戏类中声明缩放系数变量,数值大于1为放大,小于1为缩小,可随时修改数值调整显示大小
// 统一缩放示例:默认缩小为原图的50%
float stickScale = 0.5f;

// 非等比缩放示例:X轴缩为原图80%,Y轴缩为原图120%
// Vector2 stickScale = new Vector2(0.8f, 1.2f);
  • 第二步:修改Draw方法中的Draw调用,替换为带缩放参数的重载,不需要的参数传入默认值即可
protected override void Draw(GameTime gameTime)
{
    GraphicsDevice.Clear(Color.CornflowerBlue);

    _spriteBatch.Begin();

    _spriteBatch.Draw(
        texture: StickFigure,
        position: stickPos,
        sourceRectangle: null, // 传入null表示绘制整张纹理
        color: Color.White,
        rotation: 0f, // 旋转角度,0为不旋转
        origin: Vector2.Zero, /* 绘制原点,默认左上角为原点
        如果需要以纹理中心为原点做缩放/旋转,可以改为:
        new Vector2(StickFigure.Width/2f, StickFigure.Height/2f)
        注意修改原点后,stickPos对应的是纹理中心的坐标而非左上角坐标 */
        scale: stickScale, // 你定义的缩放系数,非等比缩放直接传入Vector2类型的变量即可
        effects: SpriteEffects.None, // 翻转效果,无特殊需求填None
        layerDepth: 0f // 图层深度,默认0即可
    );

    _spriteBatch.End();

    base.Draw(gameTime);
}

你也可以在Update方法中添加缩放控制逻辑,比如绑定加号/减号键调整stickScale的数值,即可实现动态调整图片大小的效果。

内容的提问来源于stack exchange,提问作者Rehan Samaratunga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 03:06:00