【问题标题】:Clipping a filmstrip in png format (Delphi 2010)以 png 格式剪辑幻灯片(Delphi 2010)
【发布时间】:2011-09-17 11:27:40
【问题描述】:

我有一个 png 格式的图像幻灯片,如下所示:

我想知道如何剪辑每个图像并将这些图像放在 TImageList 控件中,始终保持透明度。

[编辑]

是的,在设计时 RRUZ 提到的技巧工作正常,但我想在运行时剪辑图像,即通过从资源或文件加载幻灯片

【问题讨论】:

  • 我会使用 ImageMagick 将图像拆分为单独的帧,然后将它们与资源文件一起导入到应用程序中。看起来您正在尝试重新发明 Screen.Cursor := crHourglass
  • 也许他希望沙漏光标在 XP 和 Vista/Win7 上看起来一样?
  • @Smasher 这听起来很难通过 TImageList 实现
  • 为什么需要沙漏的静态图像?你确定你真的想要动画吗?
  • 我会将crop the PNG 转换为N 32 位位图(在您的情况下为18 个),并在运行时将每个位图添加到TImageList

标签: delphi png transparency timagelist


【解决方案1】:

您必须按照以下步骤操作:

  • ColorDepth属性设置为cd32Bit

  • DrawingStyledsTransparent,

  • Height= 48,

  • Width=48,

然后加载图像,结果将是

【讨论】:

  • Funky,没想到它会为你做到这一点!
【解决方案2】:

只需导入图像列表。它会抱怨它太大,并愿意为你把它分成几块。在 D2005 上对我来说效果很好。

另一个很酷的提示:我使用 AWIcons Pro http://www.awicons.com/icon-editor/ 来编辑图标(不错的编辑器!)。它具有可以将图标导出为图像列表(.bmp 或 .png 格式)的功能,从而将幻灯片制作成图标。这使得以 .ico 格式编辑这些内容非常方便,一系列单元格的大小和深度都相同,每个单元格略有不同。然后导出为图像列表(我使用 .png),然后 Delphi 可以将它们分解为单个单元格。非常光滑。 AWIcons 不是免费的,但像这样的功能确实使它变得高效。

【讨论】:

  • 在运行时?如何?用什么代码? (他没有在设计时询问)
【解决方案3】:

在运行时,您必须调用 TImageList.FileLoad。除非它不起作用。

这反过来调用 ImageList_LoadImage,uFlags 参数值包括位 LR_LOADFROMFILE,这会导致 Windows 从磁盘上的文件加载。此底层功能仅支持 TBitmap (BMP) 格式。

请参阅nearly-duplicate question。 PNG 支持是一项设计时功能,可将 PNG 数据转换为内部非 PNG 和不完全是 BMP 格式,供 MS 公共控件库在内部使用。以文本形式查看您的 DFM,您将看到您的 PNG 输入已变成什么。其他答案显示使用基于位图颜色的透明度保留了透明度。

如果您想以 PNG 格式保存数据,则不应使用 VCL TImageList 来存储它,因为您必须将 PNG 转换为 TBitmap 才能真正使用 TImageList。

【讨论】:

    猜你喜欢
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 2015-04-21
    相关资源
    最近更新 更多