Firemonkey - 如何将 Tlistitemimage 放置在一个圆圈中

Firemonkey - how to place an Tlistitemimage in a circle

我有一个列表视图,其中每个项目都有图像和数据。我希望我的图像(这是一个 TlistitemImage 看起来像下面这样。

我可以很容易地通过使用 Tcircle 和 mycircle.fill.bitmap.bitmap 来做到这一点,例如下面的代码 lcircle.fill.Bitmap.Bitmap.LoadFromFile(TPath.GetDocumentsPath + PathDelim + 'test.png'); 但是我根本无法为每个列表项创建一个圆圈:-(

我的另一个选择是使用 Tlistitemimage - 代码如下:

  LImage := TListItemImage.Create(mylistviewitem);
       LImage.Name := 'image';
       LImage.Align := TListItemAlign.Leading; // En Sað
       LImage.VertAlign := TListItemAlign.center; // Orta
       LImage.PlaceOffset.Y := 0;
       LImage.PlaceOffset.X := 0;
       Limage.width := 80;
       LImage.Height := 80;

       LImage.OwnsBitmap := True;
       LImage.Bitmap := TBitmap.Create(0,0);

Limage.Bitmap.LoadFromFile(TPath.GetDocumentsPath + PathDelim + 'test.png');

现在我的想法是创建 Tcircle 并将圆的父对象设为 TListItemImage。不幸的是,这不起作用:-(

我也尝试过使用样式簿执行此操作,创建一个名为 listitemimagestyle 的新样式并在该样式中创建一个 tcircle,但这也没有任何作用。

有人可以帮助我吗?

谢谢 - 是的,我是菜鸟,所以请多多关照

我会使用 TBitmap.CreateFromBitmapAndMask 来使用蒙版创建位图。面具将是包含您的圆圈的黑白图像。

尝试创建一个圆圈,例如在隐藏的 tabitem 上,并将图像放在这个圆圈上。 之后从文件加载图像并将屏幕截图分配给列表项位图

Item.Bitmap.Assign(Circle1.MakeScreenshot);

fmx 形式

    object Circle1: TCircle
        Align = Right
        Fill.Color = claSteelblue
        Margins.Left = 10.000000000000000000
        Margins.Top = 10.000000000000000000
        Margins.Right = 10.000000000000000000
        Margins.Bottom = 10.000000000000000000
        Position.X = 154.000000000000000000
        Position.Y = 10.000000000000000000
        Size.Width = 65.000000000000000000
        Size.Height = 65.000000000000000000
        Size.PlatformDefault = False
        Stroke.Kind = None
        object Image1: TImage
          MultiResBitmap.Height = 36
          MultiResBitmap.Width = 36
          MultiResBitmap.LoadSize = 2
          Align = Client
          Size.Width = 65.000000000000000000
          Size.Height = 65.000000000000000000
          Size.PlatformDefault = False
          WrapMode = Center
        end
   end