问题标签 [timagelist]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1516 浏览

image - 图片数据库、TDBImages、TImageList、Delphi

我正在编写一个显示图片(地图)的程序。当您点击图片的一部分时,它必须放大。总共有26张图片(包括主图)。我想将这些图片加载到 Delphi 中,并将 Image1(Whole_map.jpg) 替换为 Amusement_park.jpg。

我想使用高质量的 jpg 而不是位图 :( *是否可以将这 26 个图像加载到 TImageList 并仍然使用其质量的图像或 *我可以将图像保存在某种数据库中并将其加载到 Delphi

加载图像并转换为位图 并没有帮助,因为我不想使用位图。我也不想使用任何第 3 方组件,因为该程序必须在默认的 Delphi 2010 上运行。

0 投票
2 回答
844 浏览

delphi - 随时随地显示来自 db 的图像

在 Delphi 中,我在详细信息表中存储了未知数量的图像文件名。这些图像文件可以是位图、Jpegs、PNGS 和 ICO 文件。

在旅途中加载和显示列表视图或列表框中的范例/最佳实践是什么?
我认为我需要以某种方式将它们加载到主表的 OnBeforeScroll 事件中的 ImageList 中,然后将其分配给列表视图。使用的数据库组件是 dbGO。

我只需要显示预定义大小的缩略图(在 VCL 程序中)。

0 投票
3 回答
2519 浏览

delphi - 如何从系统 ImageList 中绘制图像的缩放版本?

我创建并初始化TImageList...

我得到了小图标(16x16)的系统 ImageList 句柄......

现在我想在缩放到 50x50 像素的控制画布上绘制图标。我该怎么做?

0 投票
0 回答
375 浏览

delphi - TImageList - 图像看起来不应该

我刚刚注意到delphi(我有xe2和xe8)中的TImageList错误地绘制了PNG图像。在屏幕截图中,您可以看到反射和边缘看起来不同(左侧是正确显示我的 PNG 的 TImage)。ColorDepth 是 cd32Bit。我尝试了不同的PNG,结果相同。请提出解决方案。

图像列表

0 投票
1 回答
4017 浏览

delphi - 带有 TImageList 的 TSpeedbutton 中的图像

我尝试使用TToolbarwithTActionList和. 我用的是32px的方形图片,但是当我选择图片时,通过ImageIndex,在TSpeedButton中,图片尺寸小于32px,我认为是16px。TSpeedbuttonTImageList

如何TSpeedButtons使用 a设置图像的大小TImageList

这是一个MVCE:

DFM:

0 投票
1 回答
355 浏览

delphi - 在更多项目上加载资源(图像)

我有一个组件。在组件中,我需要加载动态的 TImageList。

我今天使用这种方式,但在我所有的项目中,我需要一次添加所有图像。

如何创建单个资源文件,例如包含多个图像可以加载到组件中而无需在每个项目中添加资源。你有办法吗?

0 投票
1 回答
102 浏览

transparency - 迁移的 C++ Builder 项目失去 Imagelist 透明度

我从 C++ Builder XE7 升级到 C++ Builder Berlin,我有一个项目,在 6 个 ImageList 控件中包含大约 100 个图像。

在 XE7 中,透明度工作正常,但升级后所有图像现在都有黑色纯色背景而不是透明度。

我仔细检查了 ImageList 的 ColorDepth 是否仍然是 cd32bit,确实如此。一切在 IDE 中看起来都是文件,图像是透明的,但是一旦我运行我的应用程序,所有图像都有黑色背景而不是透明度。

黑色背景

我尝试删除一个新的 TImageList,cd32 位深度,并添加了一些在 XE7 中运行良好的透明 PNG:s。它们在运行时仍然显示为黑色背景,但在 IDE 中却没有。

0 投票
1 回答
352 浏览

delphi - 将 TImageList 字形绘制到 TDirect2DCanvas

我目前正准备将旧组件的绘图代码从 GDI + UniScribe 替换为 Direct2D 和 DirectWrite(继任者)。

到目前为止,过渡是直截了当的,因为大多数时候我需要做的就是将对 Canvas(TCanvas 类)的调用替换为自定义 FDirect2DCanvas 实例(TDirect2DCanvas 类,来自 Direct2D 单元)。

不幸的是,当尝试从 TImageList 实例将字形绘制到 FDirect2DCanvas 上时似乎并不简单,因为 draw 方法仅适用于 TCanvas,而不适用于相当通用的 TCustomCanvas(它是 TCanvas 和 TDirect2DCanvas 的祖先)。

这种困境的解决方案是将 TImageList 字形绘制到一个临时位图并将其绘制到 TDirect2DCanvas。但是,我担心这可能会大大降低绘图性能。

到目前为止,有没有人这样做过?我有什么选择?

0 投票
1 回答
128 浏览

delphi - 向delphi ide添加工具按钮时的奇怪行为

我正在尝试一些东西,并想做一个 delphi IDE 扩展。我的基本想法是扩展当前在 IDE 中的 ToDo 列表功能。

第一步是向 IDE 添加一个工具按钮,该按钮将打开一个显示待办事项的表单。

但我注意到一些我希望自己造成的奇怪事情,因为这意味着它可以很容易地修复。

我正在将我的工具按钮添加到自定义工具栏,这是带有蓝色问号的工具栏(见稍后截图)

发生的事情:我安装了我的包,按钮添加了正确的图像,就在现有按钮的旁边。现在我用已安装的包关闭模态表单,然后蓝色问号发生变化。

在此处输入图像描述

不要介意我使用的图标,我最终会使用不同的图标,但没关系。
所以基本上现有的项目更改为我自己的图标,但由于某种原因被禁用。我无法弄清楚为什么会发生这种情况。

正如我在网上找到的指南中所建议的那样,我使用了 TDatamodule 来实现我的代码。

我的代码:

DoRaise 是我自己的程序,它简单地销毁我的所有对象并引发异常,这样做是为了防止 ide 中的内存泄漏。

但是,我认为,我没有做任何奇怪的事情,但是却出现了这个问题。
所以我希望这里有人可能做了类似的事情并在我的代码中看到错误。

提前致谢。

Ps 如果您需要更多信息或查看单元的其余部分,请告诉我,我会将整个单元放在 github 或类似的东西上。

编辑: 感谢@Uwe Raabe,我设法解决了这个问题。问题在 INTAServices.AddImages 的评论中发现

AddImages 从给定的图像列表中获取所有图像并将它们添加到主应用程序图像列表中。它还创建了一个从原始图像索引到主图像列表中的新索引的内部映射数组。AddActionMenu 使用此映射将操作对象的 ImageIndex 属性重新映射到新的 ImageIndex。这应该是向主应用程序窗口添加操作和菜单项时调用的第一个方法。返回值是源列表中第一个图像在主应用程序图像列表中的第一个索引。使用 nil 图像列表调用此函数以清除内部映射数组。与祖先接口中的 AddImages 函数不同,此版本采用允许重用相同基本索引的 Ident。

最终解决方案是将我的图像添加到本地图像列表中,该图像列表已添加到 IntaServices 代码的图像列表中:

0 投票
1 回答
849 浏览

delphi - Delphi / C++ builder Windows 10 1709 位图操作极慢

有人遇到过这个问题吗?:

它出现在 Windows 10 更新构建 1709 之后。经过一些系统运行时间 - 几个小时 - 位图加载,图像列表项添加变得非常缓慢。一个 256x256 的 BMP 加载时间超过 10 秒……在执行此操作时,它会 100% 占用一个 CPU 内核。因此,可以在几秒钟内正常启动的已编译应用程序现在可以在几分钟内启动!

我经常使用休眠/恢复。显示驱动程序已有一年多的历史,因此这不是问题。

对此有何评论?

更新:我发现使用 Canvas.Pixels 的代码会发生这种情况,因此可以更改,但速度仍然非常慢。

更新 2:替换为 Scanline 操作加快了速度。最近的 Windows 补丁一定让 Canvas.Pixels 在大量使用时变得非常缓慢。