作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试制作一个“空白”背景以在其上放置图像。通过将 TImage 放置在表单上并执行以下操作来创建剖面线并不太困难:
image1.Canvas.brush.Style := bsDiagCross;
image1.canvas.brush.color := clWhatever;
image1.canvas.FillRect(image1.clientrect);
这有效,我在黑色背景上得到了 clWhatever 中的剖面线图案。但这就是问题所在。它始终是黑色的,如果我想要黑色以外的颜色,我找不到任何方法来指定背景颜色。
有人知道怎么做吗?
最佳答案
阴影画笔的颜色是前景色 - 阴影本身的颜色。
使用阴影画笔时,背景颜色是单独设置的,据我所知,背景颜色没有作为 TCanvas 的属性公开,因此需要使用 Windows GDI API SetBkColor () 函数。
例如要在白色背景上绘制红色阴影,请在使用 Canvas 画笔绘制之前添加一个调用来设置背景颜色:
image1.Canvas.brush.Style := bsDiagCross;
image1.canvas.brush.color := clRed;
SetBkColor(image1.Canvas.Handle, ColorToRGB(clWhite));
image1.canvas.FillRect(image1.clientrect);
[更新:] 注意: 在 Delphi 2010(可能还有一些早期版本)中,您应该在设置画笔之后调用 SetBKColor()特性。在 Canvas 内部,当 Canvas 创建其画笔时,它会调用 SetBKColor(),该函数会破坏在引用 Canvas.BrushSetBKColor() 进行的任何显式调用>。创建内部 Canvas 画笔的时间或 SetBkColor() 的内部使用似乎在 Delphi 2006(测试原始帖子时使用)和 Delphi 2010 之间发生了变化。无论出于什么原因在使用 SetBKColor 之前立即调用它显然更可靠。
关于delphi - 如何在 TCanvas 上绘制剖面线并指定背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3129266/
我是一名优秀的程序员,十分优秀!