- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从 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/
这是我的其他问题 Here 的后续问题. 正如我在评论中建议提出有关此主题的新问题 有人建议我在 Row 中绘制不同的图像。我从一开始的目标就是并排插入节点,我被告知这不能用 VDT 来完成,它不是为
我正在从 TVirtualDrawTree 派生一个自定义控件,并且我正在覆盖 DoPaintBackground事件为树 View 绘制背景渐变效果。 我也覆盖了 DoBeforeItemPaint
我是一名优秀的程序员,十分优秀!