Delphi 是否在Imagelist上显示次基础图像?
我有一个分配给listview的图像列表来显示透明图像 对于添加的一些透明图像,这有一个小问题,即它们有时在listview中很难看到/找到 请参见此示例图像: 你会注意到这些图像(很明显是鼠标)几乎看不见,事实上,如果添加了一个空图像,你甚至看不到它,数字标题在这里起到了解救作用,表明确实存在一些东西 但是我想让图像在视觉上更容易看到。我想在透明图像下面再放一张图像可能会有用——当然,这不会影响实际图像 考虑到这一点,我制作了一个棋盘格位图: 我觉得这将是表示图像透明区域的最合适的方式,就像Paint.NET等 为了进一步说明此示例,我修改了原始图像以显示其外观,如果我们将棋盘位图作为参考底图图像: 如果棋盘在那里,首先表明那里有一个列表项,棋盘格的位图可能会更暗,或者是一种完全不同的图像。正如我前面所说的,如果没有图像,您将什么也看不到,所以最好显示一个空的棋盘格或其他位图,而不是什么都看不到Delphi 是否在Imagelist上显示次基础图像?,delphi,delphi-xe,Delphi,Delphi Xe,我有一个分配给listview的图像列表来显示透明图像 对于添加的一些透明图像,这有一个小问题,即它们有时在listview中很难看到/找到 请参见此示例图像: 你会注意到这些图像(很明显是鼠标)几乎看不见,事实上,如果添加了一个空图像,你甚至看不到它,数字标题在这里起到了解救作用,表明确实存在一些东西 但是我想让图像在视觉上更容易看到。我想在透明图像下面再放一张图像可能会有用——当然,这不会影响实际图像 考虑到这一点,我制作了一个棋盘格位图: 我觉得这将是表示图像透明区域的最合适的方式,就
那么,如何使用imagelist在原始图像下方显示第二个图像,以给出类似于上述示例的结果?下面的图像可以是任何内容—例如,只是另一个加载的位图。如果您将棋盘存储为第一个图像(索引为0),并在事件处理程序中从当前图像生成覆盖图像,它将执行您想要的操作。但是,我不确定每次触发事件时生成覆盖图像的效率
procedure TForm1.ListView1GetImageIndex(Sender: TObject; Item: TListItem);
begin
// make the overlay (with overlay index 1) from the
// image with index Item.Index + 1
ImageList1.Overlay(Item.Index + 1, 1);
// use the first image from the list as a background
Item.ImageIndex := 0;
// and assign just created overlay index for overlay
Item.OverlayIndex := 1;
end;
我想你需要的是一个具有额外功能的TImageList
作为一个出发点,我建议您在《强》内部的Delphi 2006 < /强>
中描述<强> <强>。 摘录: TImageListEx组件是可以使用 来自另一个图像列表的图像,以生成禁用的图像,可以 可用于工具栏和其他用户界面元素 TImageListEx组件是可以使用 来自另一个图像列表的图像,以生成禁用的图像,可以 可用于工具栏和其他用户界面元素 TImageListEx组件有几个好处:- 它消除了创建禁用图示符的需要
- 它消除了在设计时将禁用的图示符添加到其他TImageList组件的需要
- 它可以大大减少.dfm文件和整个应用程序的大小,特别是在使用大量数据的大型应用程序中 字形
- 它的速度非常快,只需几毫秒就可以禁用图像列表中的所有图像,即使存在多个图像
- 它非常轻。(如果将其添加到已使用标准TImageList组件的应用程序中,则不会增加 可执行文件的大小,以及是否将其添加到应用程序中 它不使用标准的TImageList组件,开销是 只有2 KB。)
这与您的要求相去甚远,但足够详细,足以说明如何扩展TImageList。谢谢,我将尝试一下,看看它的效果如何。即使它起作用,我也会在几天内保持沉默,然后我们可以看看是否有其他方法:)当然,我也在想是否有有效的方法来解决这个问题。在我看来,这似乎很自然,但我不喜欢在频繁触发的事件中创建遮罩。我在大约200张图像的imagelist上测试了这一点,它似乎做得足够好,我看不到它带来的负面影响。如果我不理解这个问题,很抱歉,你为什么不把棋盘加载到位图中,然后在上面画出你的透明图像,然后你可以在任何地方画出你想要的位图?@SertacAkyuz但如果我这样做了,这两个图像不会变成一个吗?例如,如果我在棋盘上画狮子,然后保存它,那么棋盘不会与狮子一起保存吗?我只想在下方显示棋盘位图,而不是将其与实际图像组合。保存什么?图像列表中的图像?您已经在imagelist中找到了它。我想我还是不明白这个问题。@SertacAkyuz我需要将图像从imagelist保存到文件,所以我不想用它保存棋盘。棋盘位图纯粹是为了更好地在listview中直观地表示图像。我了解GR32-我不确定这是否有帮助,因为它涉及调整listview/imagelist。对不起,我第一次尝试回答的问题是离题的。做了一次编辑,提出了一些更有价值的建议。谢谢