我知道这是一个非常具体的案例,所以我想解释一下真正的问题是什么。
我有一个FMX表单,有时用作单独的窗口,有时嵌入另一个表单。激活表单后,它将检查是否有任何更改,如果有,它将重新加载一些图像。但是我发现,如果表单有BorderStyle = None
,则首次激活TCanvasAttribute.MaxBitmapSize
会返回值1024
,但其他每个都是8192
。使用img1.Bitmap.LoadFromStream
从位图设置尺寸时出现问题。
当我试图找出这个值的来源时,我得到了一个MaxAllowedBitmapSize
,所以我甚至不知道它是如何被改变的。我不确定这是一个错误还是一些特殊行为,所以我将不胜感激。
这是一个简单的测试应用程序,至少应该在XE6上运行。
object Form1: TForm1
Left = 0
Top = 0
BorderStyle = None
Caption = 'Form1'
ClientHeight = 480
ClientWidth = 640
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop, iPhone, iPad]
OnActivate = FormActivate
DesignerMobile = False
DesignerWidth = 0
DesignerHeight = 0
DesignerDeviceName = ''
DesignerOrientation = 0
DesignerOSVersion = ''
object img1: TImage
MultiResBitmap = <
item
end>
Align = Client
Height = 480.000000000000000000
Width = 640.000000000000000000
end
end
并形成OnActivate
事件
procedure TForm1.FormActivate(Sender: TObject);
var
lSize : Integer;
begin
lSize := img1.Bitmap.CanvasClass.GetAttribute(TCanvasAttribute.MaxBitmapSize);
end