gpt4 book ai didi

delphi - 如何在 TVirtualDrawTree 中创建具有透明背景的节点?

转载 作者:行者123 更新时间:2023-12-03 18:33:47 24 4
gpt4 key购买 nike

我正在从 TVirtualDrawTree 派生一个自定义控件,并且我正在覆盖 DoPaintBackground事件为树 View 绘制背景渐变效果。

我也覆盖了 DoBeforeItemPaint功能,以便我可以自定义绘制树 View 项。但是,我无法让项目以透明背景进行绘制。

查看 TVirtualDrawTree 的源代码,看起来好像该项目被复制到 TBitmap 图像,然后复制到 Canvas 上,但是,我尝试编辑源代码并在位图本身上设置透明度选项,但它似乎仍然没有工作。

我也试过在绘制之前清除 Canvas ,例如Canvas.Brush.Style := bsClear并填写项目 rect 但没有快乐。

最佳答案

不要透明,作弊!
绘制渐变听起来像很多工作:将它绘制到一个临时位图,这样你就不需要每次都重新生成它 DoPaintBackgrdound()叫做。一旦你在位图中有了背景,你就可以 BitBlt处理时将相关部分放入 Canvas DoBeforeItemPaint , 你可以 BitBlt当您需要整个背景时,将位图映射到整个虚拟树。
通过这种方式,您不需要处理昂贵的透明度,但对于最终用户来说,您的项目看起来像是使用透明度绘制的。这是一个双赢的局面。

关于delphi - 如何在 TVirtualDrawTree 中创建具有透明背景的节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5567536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com