我想从一组例如30位图表格上的小数字。我在这个表单上放置了几个TImage组件,并在设计时加载了图像。现在我想在表单开始时将图像从TImagelist加载到Timage组件中来交换图像。我失败了,因为Timagelist只能保存最大128 x 128像素的图像。
问:如何制作大图像的图像列表?
对我来说没有选择:
答案 0 :(得分:1)
因此,您希望能够按需显示这30个位图中的任何一个,但您不希望在需要时从外部文件加载它们。我想这是因为你担心硬盘性能会使你无法足够快地显示这些图像。
我看到了几个选项:
第一个选项是将这些图像放在单独的文件中,然后在应用程序启动时将它们加载到多个TBitmap类中(每个图像一个TBitmap)。然后,当您需要在表单上显示特定图像时,只需将特定位图指定为所需TImage组件的图像源,您希望在该组件上显示该图像。
如果您不想为您的应用程序分发30+文件,您可以将所有这些图像放入单个存档中,然后在应用程序开始时将它们加载到单独的位图类中,如上所述。
如果您只想为您的应用程序提供单个文件,那么您可以将这些图像放入资源文件中,然后将该资源文件构建到您的可执行文件中。完成后,您可以将这些图像作为资源访问。我认为有一个问题是关于使用不久前在SO上发布的资源。
现在,如果您不知道如何使用资源并且不愿意学习,您可以使用一些图像编辑软件将所有这些图像放入一个大图像中。然后,您可以在表单上使用一个TImage控件在设计时设置该大图像。
这会将图像数据直接集成到您的DFM中,由于DFM中的大图像数据,这可能会导致表单创建速度变慢。
现在,您可以通过将部分大图像画布复制到所需TImage组件的画布上来显示所需的图像。事实上,您不再需要使用TImage组件。任何带有画布的组件都可以。
这最后一个选项类似于使用Atlas Bitmap-ses或有时使用Sprite图像。
Arioch建议内部使用的Graphics32库中的组件使用非常相似的方法。