OnActivate事件中的TCanvasAttribute.MaxBitmapSize值

时间:2017-10-24 14:49:43

标签: delphi firemonkey delphi-xe6

我知道这是一个非常具体的案例,所以我想解释一下真正的问题是什么。

我有一个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

0 个答案:

没有答案