在MDI主窗体中画背景的最简单方法

本文介绍了一种解决Delphi中TImage控件在显示图片时出现与停靠控件相同高度或宽度空白的方法。通过在Form的OnPaint事件中使用Canvas-StretchDraw(ClientRect,Image1-Picture-Graphic)及OnResize事件中使用InvalidateRect(ClientHandle,NULL,true),成功解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    用TImage是可以的,不过要是窗体上有停靠的控件,比如工具栏停靠在顶部或者导航菜单停靠在左边,那么TImage显示的图片就会有一段与停靠控件高度或宽度相同的空白,不知道算不算Bug,要是放一个Panel并把TImage放在上面,那么子窗体就被压在Panel下面了,看样子这个法子行不通.

    网上找了很多,都是罗里八嗦一大堆,什么钩子啊,消息啊,到最后调试下来还不能通过,气得我当场吐血半斤,功夫不负有心人,疯狂搜索小时后,居然让我找到一个,还特简单(据说是源自季世平),方法如下:

在Form的OnPaint事件里:
Canvas->StretchDraw(ClientRect,Image1->Picture->Graphic);

在OnResize事件里:
::InvalidateRect(ClientHandle,NULL,true);

搞定!这里用到了一个加载了图片的TImage控件,不过要是不想这么做,改起来也很简单,自己琢磨吧.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值