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
我有一个列表视图,其中每个项目都有图像和数据。我希望我的图像(这是一个 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