如何在“画布”上绘制交叉影线并指定背景颜色

时间:2010-06-27 23:17:40

标签: delphi colors canvas drawing

我正在尝试制作一个“空白”背景,将图像放在上面。通过在表单上放置TImage并执行以下操作来创建交叉阴影并不困难:

image1.Canvas.brush.Style := bsDiagCross;
image1.canvas.brush.color := clWhatever;
image1.canvas.FillRect(image1.clientrect);

这是有效的,我在clW中获得了一个交叉阴影图案,无论是在黑色背景下。但这就是问题所在。它总是黑色的,我找不到任何方法来指定背景颜色,以防我想要黑色以外的东西。

有谁知道怎么做?

1 个答案:

答案 0 :(得分:9)

阴影画笔的颜色是前景颜色 - 阴影线本身的颜色。

使用阴影画笔时会单独设置背景颜色,据我所知,它不会作为 TCanvas 的属性公开,因此需要使用Windows GDI API SetBkColor ()功能。

e.g。要在白色背景上绘制红色阴影,请在使用画布画笔绘制之前添加调用以设置背景颜色:

image1.Canvas.brush.Style := bsDiagCross;
image1.canvas.brush.color := clRed;

SetBkColor(image1.Canvas.Handle, ColorToRGB(clWhite));
image1.canvas.FillRect(image1.clientrect);

[更新:] 注意:看来,在Delphi 2010(可能还有一些早期版本/ s)中你应该调用 SetBKColor ()AFTER设置画笔属性。在内部画布创建它的画笔时,它会调用 SetBKColor (),它会在引用 Canvas.Brush SetBKColor ()进行践踏>。创建内部画布画笔的时间,或内部使用 SetBkColor (),在Delphi 2006(测试原始帖子时使用)和Delphi 2010之间似乎已经发生了变化。无论是什么原因在使用之前立即调用SetBKColor显然更可靠。