Mas*_*ler 5 delphi drawing canvas colors
我正在尝试制作一个"空白"背景,将图像放在上面.通过在表单上放置TImage并执行以下操作来创建剖面线并不困难:
image1.Canvas.brush.Style := bsDiagCross;
image1.canvas.brush.color := clWhatever;
image1.canvas.FillRect(image1.clientrect);
Run Code Online (Sandbox Code Playgroud)
这是有效的,我在clW中得到一个交叉阴影图案,无论是在黑色背景下.但这就是问题所在.它总是黑色的,我找不到任何方法来指定背景颜色,以防我想要黑色以外的东西.
有谁知道如何做到这一点?
阴影画笔的颜色是前景色 - 画布本身的颜色.
使用阴影画笔时,背景颜色是单独设置的,据我所知,它不作为TCanvas的属性公开,因此需要使用Windows GDI API SetBkColor()函数.
例如,要在白色背景上绘制红色阴影,请在使用画布笔绘制之前添加调用以设置背景颜色:
image1.Canvas.brush.Style := bsDiagCross;
image1.canvas.brush.color := clRed;
SetBkColor(image1.Canvas.Handle, ColorToRGB(clWhite));
image1.canvas.FillRect(image1.clientrect);
Run Code Online (Sandbox Code Playgroud)
[更新:] 注:看来,在2010年德尔福(也可能是一些早期版本/秒),你应该调用SetBKColor()之后设置画笔属性.在内部,当画布创建它的画笔它调用SetBKColor这践踏任何显式调用()SetBKColor()之前引用作出Canvas.Brush.内部帆布刷创建时的时间,或在内部使用的SetBkColor(),2006年出现德尔福之间已经改变(用于测试的原始发帖时)和德尔福2010年无论它显然更可靠的调用SetBKColor的原因在使用它之前.