【问题标题】:Image not showing in TSpeedButton图像未显示在 TSpeedButton 中
【发布时间】:2020-02-10 13:21:33
【问题描述】:

我正在使用 Embarcadero C++Builder。我正在使用带有.bmp 图像的TSpeedButton 组件。 无论我尝试什么格式,在 IDE 中一切看起来都很棒,但是当我编译并生成 .exe 文件然后启动应用程序时,没有图像。 TSpeedButton 上有带有白色小方块的文字。我尝试过.png.jpg.bmp.ico 格式。我的问题有什么解决办法吗?

【问题讨论】:

  • 这能回答你的问题吗? C++ Load a bmp image on Tspeedbutton
  • 你能复制一下这里的按钮吗?您可以复制按钮 (Ctrl+C),然后将其粘贴为文本(DFM 格式)或直接从 .dfm 文件中获取源代码。

标签: c++ image c++builder vcl


【解决方案1】:

TSpeedButton 具有属性NumGlyphs,它指示Glyph 包含多少图像。如果您只有一张图像,则设置NumGlyphs = 1

此外,您可以为禁用、悬停和按下(向下)按钮设置单独的图像。在这种情况下,多个图像以水平原始格式彼此相邻地存储在同一个位图上;每个图像必须具有相同的大小。例如,一个 128x32px 的位图提供 4 张图像,每张 32x32px。

值得一提的是,左下像素表示透明颜色,即不会绘制该颜色的像素。

【讨论】:

  • 这是否旨在解决问题“IDE 中的一切看起来都很棒,但是当我编译并生成 .exe 文件然后启动应用程序时没有图像” ?如果是这样,你能澄清一下吗?
  • @TedLyngmo 是的。 IDE 在设计模式下会忽略NumGlyphs 属性,如果NumGlyphs = 4(意思是2*2 布局应该提供4 张图片),但实际上只有一张图片,那么程序只显示左上角图片的四分之一。
  • 我不确定我是否理解,但也许您应该将其添加到答案中?位图的尺寸应为 Xsize = Ysize * NumGlyphs,如果 NumGlyphs = 4,则表示 1*4 布局。
  • 当 NumGlyphs > 1 时,我用有关位图上图像位置的更多信息更新了答案
  • @TedLyngmo "如果在位图中放置 3 个图像,NumGlyphs 不会自动更新?" - 如果位图的宽度正好是其高度的 3 倍,它会自动更新。 “文档...没有提到它会计算”——我描述的是真正发生的事情,我查看了TSpeedButton的源代码。
【解决方案2】:

我找到了我的问题的解决方案。这只是windows 10默认应用的兼容模式的问题。我刚刚在兼容模式Win XP SP2下禁用了应用程序的运行,然后没有显示问题。

感谢大家的支持。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 2016-10-06
    • 2014-05-07
    • 1970-01-01
    • 2015-06-09
    • 2017-01-10
    • 2013-08-19
    相关资源
    最近更新 更多