0

我有一个 TMainMenu 链接到包含图像的 TImageList 。当菜单项被禁用 (Enabled=False) 时,图像显示为黑色。但是,我使用的是两个屏幕,它只在其中一个屏幕上显示为黑色。屏幕的主要区别在于,一个是较小的笔记本电脑屏幕,在 Windows 显示设置中的比例设置为 125%,另一个是较大的屏幕,比例设置为 100%。图标在屏幕上显示为黑色,比例设置为 100%。如果我将两个屏幕设置为相同的比例(125% 或 100%),则不会出现问题。它仅在比例​​不同时出现在一个屏幕上。另请注意,应用程序窗口最初是在不显示问题的屏幕上创建的。除了黑色之外,出现问题的屏幕上的图像也似乎更小,

这在 VCL 应用程序中不是问题,只有 FMX。

请参阅下面从每个屏幕捕获的快照。两个菜单项都设置为 Enabled=False。谁能解释为什么会发生这种情况,我能做些什么吗?我正在使用 Rad Studio 10.4。

在此处输入图像描述

可重现的示例(包括设置屏幕的说明):

形式:

object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Menu item image issue'
  ClientHeight = 297
  ClientWidth = 344
  Position = ScreenCenter
  FormFactor.Width = 320
  FormFactor.Height = 480
  FormFactor.Devices = [Desktop]
  DesignerMasterStyle = 0
  object Button1: TButton
    Position.X = 96.000000000000000000
    Position.Y = 16.000000000000000000
    Size.Width = 137.000000000000000000
    Size.Height = 41.000000000000000000
    Size.PlatformDefault = False
    Text = 'Toggle Undo Enabled'
    OnClick = Button1Click
  end
  object Memo1: TMemo
    Touch.InteractiveGestures = [Pan, LongTap, DoubleTap]
    DataDetectorTypes = []
    Lines.Strings = (
      'Set up 2 screens'
      'Set screen 1 to Scale 125% in Display Settings'
      'Set screen 2 to Scale 100% in Display Settings'
      'Set multiple displays to '#39'Extend these displays'#39
      'Run this application. It should appear on screen 1'
      'Drag the application window to screen 2'
      'The undo menu icon appears black. It does not on screen 1'
      'Click the button to enable the undo menu item'
      'It no longer appears black on screen 2')
    Position.X = 8.000000000000000000
    Position.Y = 88.000000000000000000
    Size.Width = 329.000000000000000000
    Size.Height = 169.000000000000000000
    Size.PlatformDefault = False
    Viewport.Width = 325.000000000000000000
    Viewport.Height = 165.000000000000000000
  end
  object MainMenu1: TMainMenu
    Images = ImageList1
    Left = 24
    Top = 24
    object EditMenuItem: TMenuItem
      Text = 'Edit'
      object UndoMenuItem: TMenuItem
        Enabled = False
        Locked = True
        Text = 'Undo'
        ImageIndex = 0
      end
    end
  end
  object ImageList1: TImageList
    Source = <
      item
        MultiResBitmap.LoadSize = 0
        MultiResBitmap.TransparentColor = 536870912
        MultiResBitmap = <
          item
            Width = 16
            Height = 16
            PNG = {
              89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
              61000000017352474200AECE1CE90000000467414D410000B18F0BFC61050000
              023C49444154384F85914F48937118C73FAF36B77738B7A94B34959A2548261A
              919526051578B06E5DAC5B7531B02E1EFA73AD4B07D92108A2935E0ACCA80E95
              749095116D113262A52F9673C6A6CE39E7DCDEB95F73DA0B635B7E2ECFEFDFF7
              E1FB7D7E1279B837F4512CAF2730984A3194C944D722EC2E37D37FBA29E77DD6
              C1FD51B7980A45D9D7DA4C63B3859528E80C90DA80E83284E6E6A9DA95E2DAE1
              5A4D57B45D79F4DE2B3C4B119ABA3BB1B45A708793FC5023789682286937B18A
              74B3BA6A1653FA6DC5165A83E1B1387BCF751134C7F128E07AF685C4481CF593
              8AEFC51481190894C0465525B79CF3625BB615E1CAE06B116DECC47EB48C555F
              18E5ED042F07BAB3E25D1C760AF3890E0C3A100B619A8A93F41DAA94320EE6C2
              7A445D71BA26097C0EE4883779DADB29F9A653286B2AAB3633DF03C9CC79A681
              BEB8961529C14A7A17FC13C95CE4635DF1628CA9285E1F25C6F474FFD135E012
              6727E3A2D51D11271D1E2DDF55C73B6D5D888C039D2EC8AF6F0A45BA52A8AFE1
              C693F18CD0547586BEA1AD7521B4AC2D77C644A8ED18B22CD32EAD31FBD589CE
              D68EBDC58AFCD3C5E0A5233973D944FBC60EB99CD8EC2AFE9884732185F1F841
              E20D82D1C924FE0A1B3DE9388E3733396EB2BAF6DCFD202612665207ACACAB12
              06B59AE8869FB80A0DD536EC22C8857AB87E6A8FA6CBB1E578F55B3C77FBF026
              4C848D5692260BEAE22C356281F38DA53CEC6DCBD2E4CDB5C9CD9190189C9846
              C856F6EB434CDDCE3F83FF52D13F2E3A1EB877FCCA82B45D7EBC8318FE02D9FE
              E3D080CDC4750000000049454E44AE426082}
          end>
        Name = 'undo_icon'
      end>
    Destination = <
      item
        Layers = <
          item
            Name = 'undo_icon'
          end>
      end>
    Left = 272
    Top = 24
  end
end

单元:

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Menus,
  System.ImageList, FMX.ImgList, FMX.Controls.Presentation, FMX.StdCtrls,
  FMX.Memo.Types, FMX.ScrollBox, FMX.Memo;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    ImageList1: TImageList;
    EditMenuItem: TMenuItem;
    UndoMenuItem: TMenuItem;
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
begin
  UndoMenuItem.Enabled := not UndoMenuItem.Enabled;
end;

end.
4

0 回答 0