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
相关产品推荐
相关产品推荐

