You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Delphi Firemonkey中实现多设备图片拉伸显示的问题

Firemonkey TImage 图片拉伸后仍有白边问题

我用Firemonkey开发简易Delphi应用,客户设备和屏幕尺寸五花八门。我使用设为Client对齐的TImage组件,将多张JPG图片分配给其MultiResBitmap属性,但所有设备上显示效果均不佳,图片四周出现白边。我有VCL开发经验,想寻找类似VCL中的Stretch属性(即使图片比例不完全匹配也可正常显示)。请问可以使用其他组件吗?或者Firemonkey中是否存在类似Stretch的属性?

编辑0

感谢Erik的提示,我找到了WrapMode属性中的Stretch选项,显示行为有所变化,但白边问题仍未解决。

左右两侧存在白边

编辑1

以下是DFM文件代码(已剔除图片数据):

object imgSearchBackground: TImage
  MultiResBitmap.Height = 1143
  MultiResBitmap.Width = 841
  MultiResBitmap = <
    item
      Width = 841
      Height = 1143
      PNG = {....}
      FileName = 'f:\projects\image0.jpg'
    end>
  Align = Client
  Size.Width = 779.000000000000000000
  Size.Height = 308.000000000000000000
  Size.PlatformDefault = False
  WrapMode = Stretch
end

解决方法

  • 修正MultiResBitmap配置
    当前MultiResBitmap固定了841×1143的宽高,与组件实际显示尺寸779×308比例差异过大。建议移除MultiResBitmap的固定宽高设置,或者添加覆盖常用设备分辨率的多尺寸图片,避免系统优先匹配分辨率等级导致拉伸逻辑失效。

  • 调整BitmapScale属性
    将BitmapScale设置为1(默认值为0,自动缩放),强制图片按组件尺寸拉伸,规避系统自动适配分辨率时产生的留白。

  • 替换为TImageControl组件
    如果TImage的问题无法解决,可改用TImageControl,它的拉伸逻辑更接近VCL的TImage.Stretch:

    1. 直接给Bitmap属性赋值(无需使用MultiResBitmap)
    2. 设置Stretch = True、Align = Client,即可让图片完全填满控件,忽略比例差异。
  • 检查边距设置
    确认TImage的Margins和Padding均设为0,这类属性可能会产生看似白边的间隙。

内容的提问来源于stack exchange,提问作者A.Sommer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 20:41:12