这是不是TBitmap的BUG?如果能解决100分相赠(0分)

  • 主题发起人 主题发起人 教父
  • 开始时间 开始时间

教父

Unregistered / Unconfirmed
GUEST, unregistred user!
TBitmap的Width、Heigth两个属性,无论是帮助还是源代码中,它的类型都是Integer,所
以它的最大值应该可以到2147483647,但是我在使用中发现它实际上是按照SmallInt来处理
的,即它的最大值是32767,超过这个值就会报参数错误,我不知这是不是个BUG?
如果有人能解决这个问题,我将以100分相赠。
 
你药用这么大的图像吗?
这是5.0里的源码,你的错误我没有试,你可以分析医源码,如果需要,可以修改成dword类型。
property Height: Integer read GetHeight write SetHeight;
property Width: Integer read GetWidth write SetWidth;
 
源码我早就看过了,你也看到了,它的类型是Integer!
 
这是从MSDN上找到的BitmapCOREHEADER定义,看来是系统不支持。
typedef struct tagBITMAPCOREHEADER { // bmch
DWORD bcSize;
WORD bcWidth;
WORD bcHeight;
WORD bcPlanes;
WORD bcBitCount;
} BITMAPCOREHEADER;

 
系统不支持是什么意思?我用的是NT4+Delphi5
 
『系統不支持』的意思是:微軟的 API 只支援到 WORD 的程度,
如果 Delphi 內部是叫用 API 的話,便受限於系統!
 
有必要吗?!
 
接受答案了.
 
后退
顶部