我已经走到了尽头......试图让一个自定义的图片列表、一个 TImageList 和一个 TListView 一起工作。原问题:列表中不显示动态添加的图片。缩小范围,问题出在 TImagelist 中。代码如下。ilMain 是 TImagelist(在别处定义)。将位图添加到列表中,立即检索它,首先“绘制”工作正常,但 sedond 失败......我在这里错过了什么?
var i:integer;
test:TSch;
currentimage :TBitmap;
stupid :TBitmap;
begin
currentImage:=TBitmap.Create;
stupid:=TBitmap.Create;
ilMain.Clear;
// currentImage.LoadFromFile('C:\Delphi\piccat\pics\MonaLisa.jpg');
JPeg2Bmp('C:\Delphi\piccat\pics\MonaLisa.jpg',currentImage);
form1.canvas.Draw(100,10,currentimage);
ilMain.Add(currentimage,nil);
ilMain.GetBitmap(0,stupid);
form1.canvas.Draw(200,10,stupid);
编辑:
对此做了一些进一步的测试;结果非常混乱和不一致。
结果实际上很大程度上取决于输入文件的大小(感谢那个指针,kobik!);似乎小于 256x256 的所有内容都没有导入到图像列表中,而沿 X 轴的较大图片(有时??)分布在多个项目上。
ilMain 设置为 256x256 像素。
下面是几个输入尺寸(X x Y,以像素为单位)的输出: 950x414 第一次绘制显示整个图像,第二次在左上角绘制 256x256 像素。但是,填充了 TImagelist 的三个项目,具有 3x 256x256 像素:可以从主图片“切出”的三张图片仍然是 256x256 像素。所有小于 256x256 的边缘(垂直或水平)都将丢失。
1600x1600 导入六张图片;第一行完整的 256x256 块,可以从图片顶部切割。tp 右侧的不完整块被省略,Y 大小 256 以下的所有行也被省略。
1500x1000 同上一张;现在进口五件。
638x376 再次相似;现在只有两个项目“适合”。
197x256(我的原始测试文件,在上面的帖子中描述)没有导入项目(X-size 小于 TImaglist X-size?)
再次 256x256,未导入数据
257x257 仍然没有数据导入
260x260 仍然没有导入数据
300x300 仍然没有导入数据
512x256 非常奇怪的一个。导入一张图片;但是它的尺寸减小了,因此大约 70% 的原始图片适合(新的)256 X 尺寸。图片下方添加了一个黑条,以弥补由于这种收缩而丢失的空间。
所以这就是我现在停止测试的地方,想知道是否有人可以在这里阐明......?
编辑:设计部分移至新问题(请参阅评论 kobik 中的请求,谢谢!)