StretchBlt()/StretchDIBits() 失败时大大不同位图大小

文章翻译 文章翻译
文章编号: 269585 - 查看本文应用于的产品
本文已归档。它按“原样”提供,并且不再更新。
展开全部 | 关闭全部

症状

StretchBlt() 和 StretchDIBits() 可能会返回 FALSE (0,一个指示失败的布尔值),即使系统内存低、 这两个设备上下文是兼容,并不是正确的边界内的两个矩形,这就可能会发生。如果源位图是比目标位图的要小得多,可能会发生此问题。

已知此问题会影响作为桌面墙纸的某些位图的显示,启用活动桌面 Web 内容。

原因

出现此问题的原因是图形设备接口 (GDI) 分配的内部缓冲区的位图缩放操作。从源位图的一个扫描行 (或带) 是拉伸 (或缩放) 到此的缓冲区,然后将其复制到目标位图。缓冲区的大小由以下初始条件确定:
  • 目标位图 PELS 一个源中的宽度扫描行。
  • 垂直缩放因子 (目标高度 / 源高度)。
  • 每 PEL (颜色深度) 的字节数。
此缓冲区的最大大小被约束为 64 kb (对于 StretchBlt()) 和 192 千字节为单位 (对于 StretchDIBits())。如果缩放因素或乘数大,它不能为 StretchBlt() 分配既小于 64 千字节 (K) 的缓冲区和大得足以处理单个带区。同样,StretchDIBits() 可能不能分配的缓冲区可以容纳一个带区 192 K 比小的。

将给定 1024 x 768 x 256 色的显示指标和 16 x 16 源位图,StretchBlt() 无法由于用来查找该最佳的缓冲区的大小,但会成功,如果源位图 18 x 18 或更大的查寻方法中的边界条件。

更多信息

有关 StretchBlt() 可能会失败原因的其他信息请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:
92529信息: 为位图函数的失败的的原因
有关此问题会影响活动的台式机 Web 内容的其他信息请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:
269595活动 PRB: 已被置乱的桌面墙纸
有关此问题和 Microsoft Windows 3.x 的其他信息请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:
111865错误: StretchBlt()/StretchDIBits() 失败与超大型伸展

属性

文章编号: 269585 - 最后修改: 2013年10月20日 - 修订: 1.3
这篇文章中的信息适用于:
  • Microsoft Windows 98 第二版
  • Microsoft Windows 98 Standard Edition
  • Microsoft Windows 95
  • Microsoft Windows Millennium Edition
关键字:?
kbnosurvey kbarchive kbmt kbdisplay kbprb KB269585 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 269585
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com