【问题标题】:Why different paint image in ListView and ImageListEditor?为什么在 ListView 和 ImageListEditor 中绘制不同的图像?
【发布时间】:2014-12-26 07:26:41
【问题描述】:

我用红点和灰色透明两层创建了简单的图像,并保存为 PNG。然后我创建了项目并添加了 TListViewTImageList 以及选项ColorDepth=cd32BitDrawingStyle=dsTransparent。除了添加 PNG 图像并将图像索引设置为 ListView 之外,我看到了不同的绘制图像。也许有人知道如何正确绘画?谢谢。

【问题讨论】:

  • 如果问题是图像在 TListView 中看起来有一个灰色正方形作为背景,而在 ImageList 中却没有,我无法重现您的问题。在我使用 XE7 VCL 桌面应用程序和一个真正的透明图像进行的测试中,它在 TListView 和 ImageList 中看起来都是一样的(没有方形背景的圆形)。您是用什么编辑器制作的图片,以及如何制作的?
  • Delphi 的哪个版本,为什么主题被禁用?
  • 也无法复制 (XE2)。绘图风格无关紧要,列表视图负责绘图。编辑:现在根据@David 的评论禁用运行时主题进行测试,可以重现。这似乎是你的答案。
  • 如果你有时间看看我的测试项目和图像,我将不胜感激。我在 Photoshop CS2 中创建。我附上了项目和图片。[链接]yadi.sk/d/MN82feR_ddcYZ
  • XE7 版本。你能告诉我在哪里可以找到要启用的主题吗?还是您的意思是 Windows 主题?

标签: delphi listview treeview vcl imagelist


【解决方案1】:

我终于找到了我的问题的答案。 TImageList using Comctl32.dll(“算法隐藏在一个dll中。但它被称为“黑源方法”(Ron Jerry)。图片在绘画之前被改变了。“) , TImageother viewers 使用 Msimg32.dll(“看起来最适合绘制具有部分透明度的图片的函数”)和 一些查看者可能会使用 GDI32.dll。这种不同的油漆不仅是PNG,还有ICO。我附上了ProjectScreenshot。感谢所有尝试帮助我的人!

【讨论】:

  • 这对我来说毫无意义。
  • 我无法打开任何yadi.sk 链接,也不知道它现在是什么样子。如果现在可以正常运行,您在项目中做了哪些更改?
  • 我没有更改要修复的项目。仅显示 TImageListTImage相同的 PNG 和 ICO 的不同绘制方式。我无法确定问题以及如何解决,但link 可能会阅读完整信息。我为自己修复了 TImageList 控制问题,我开始使用TPngImageList。如果你告诉我一些,我可以将项目重新加载到另一个服务。
猜你喜欢
  • 2017-11-10
  • 1970-01-01
  • 2023-03-03
  • 2021-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多