You need to enable JavaScript to run this app. QML如何实现仅在单侧投射的定向阴影效果?
优惠活动
大模型
产品
解决方案
定价
更多

QML如何实现仅在单侧投射的定向阴影效果?

QML实现单侧定向阴影的解决方案

完全可以实现仅单侧投射的定向阴影,核心思路是结合DropShadow元素和遮罩裁剪处理,过滤掉不需要展示的方向的阴影,同时避免阴影整体尺寸大于原对象的问题。

实现逻辑

  • 先用DropShadow生成基础阴影效果,通过x/y属性设置阴影的投射偏移方向,调整radius控制阴影模糊度,color设置阴影透明度和颜色
  • 对生成的阴影额外增加一层裁剪约束,仅保留目标投射方向的阴影区域,其余方向的阴影直接裁剪隐藏,即可实现单侧阴影效果

代码示例(仅底部单侧阴影)

import QtQuick 2.15
import QtGraphicalEffects 1.15

Rectangle {
    id: targetElement
    width: 300
    height: 200
    color: "#ffffff"
    radius: 8

    // 基础阴影生成
    DropShadow {
        id: rawShadow
        anchors.fill: parent
        source: parent
        radius: 12
        samples: 24
        color: "#80000000"
        // 仅设置向下偏移,实现底部阴影基础效果
        y: 6
        x: 0
        transparentBorder: true
    }

    // 阴影裁剪层:仅保留底部超出原元素的阴影
    Item {
        anchors.fill: rawShadow
        clip: true
        visible: rawShadow.visible
        Component.onCompleted: rawShadow.parent = this
    }
}

方向调整说明

如果需要实现其他方向的单侧阴影,仅需修改DropShadow的偏移参数即可:

  • 右侧阴影:设置x: 6、y: 0
  • 左侧阴影:设置x: -6、y: 0
  • 顶部阴影:设置x: 0、y: -6
  • 相邻双侧阴影(例如下方+右侧):同时设置x: 6、y: 6即可

内容的提问来源于stack exchange,提问作者JLubberger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 05:45:04