使用Graphics类的DrawImageUnscaled时的发现

在开发RPG游戏引擎时遇到DrawImageUnscaled函数导致的图片切分不完整和性能下降问题。通过调整Image的PhysicalWidth和PhysicalHeight属性,成功修复切图问题并提高游戏运行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在写一个小RPG游戏引擎,在切分帧序列图片时碰到了一个很奇怪的问题:有的图片可以很完整地截取,然而有些图片却总是切不完整。一开始我反复地检查,确保每个小图的尺寸没有算错,但依然存在这个问题。还有一个更奇怪的问题,就是在绘制游戏地表时,使用某些图片会相当卡,CPU占用率相当高。于是我把这个问题单独拎出来研究了一下,最终解决了!现在我来浅谈这个问题。

首先来看看这个函数:


使用DrawImageUnscaled函数要求我们指定一个位置,一张图片(需要切分的“大图”)。其实还需要指定一个切图的尺寸,但由于这个函数是通过Graphics 实例绘制图片,因此这个大小应该由实例指定,我在程序中是这样使用的:

Bitmap img = new Bitmap(width, height);
Graphics g = Graphics.FromImage(img);
g.DrawImageUnscaled(operatingImage, -j * width, -i * height);

这样,被切分出来的图片就会保存在img里(width
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值