让 AlphaControls 和 RzFormShape 控件和平共处——如何使部分窗体免受 AlphaControls 渲染

只要在项目主窗体上放置了SkinManager并激活之后(SkinManager.Active := True),那么皮肤渲染效果即刻全局生效。我的一个次级窗体为了以不规则的异形呈现,使用了 RzFormShape 控件(直接设置其 Picture 属性即可)。然而由于AlphaControls 的皮肤渲染会覆盖窗体的透明设置,导致无法正确显示不规则形状的背景透明区域。

在次级窗体创建时临时设置SkinManager.Active := False 是可以实现异形的,但此时主窗体的皮肤渲染效果也会随之消失。花了不少时间内外网到处查,但有关 RzFormShape 的资料极少,或者即便是有人提到也都是只言片语,问了各方Ai大神所给方案都是错误百出,只好静下心来,打开 AlphaControls  的官网,耐心研读相关文档……

嘿嘿,还真找到了两个极其简单的解决方案!

方案1:只须将次窗体的Tag值设为数字256即可。

附此方法所依据的官方说明:If the Tag property of the form is accessible then set a 8th bit of this property to 1 (value is $100 or 256), the form will not be skinned in this case. Other bits may be used by developer for other purposes. This is an easiest solution.

方案2:在次窗体上添加组件TskinProvider,然后设置其属性DrawClientArea值为False即可。

附此方法所依据的官方说明:DrawClientArea allows to disable a skinning of client area of the form. It's may be useful if drawing of borders and form titlebar only is needed.

这两种方法各有优缺点:

  • 方案一:简单直接,只需设置一个属性即可,但可能会影响到其他需要皮肤渲染的功能。
  • 方案二:更加灵活,可以精确控制哪些部分需要皮肤渲染,但需要额外添加一个组件。

根据你的具体需求选择合适的方案。如果只是简单地禁用皮肤效果,方案一会更简洁;如果需要更精细的控制,方案二会更加合适。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值