代码之家  ›  专栏  ›  技术社区  ›  Mason Wheeler

如何在TCANVAS上画十字线并指定背景色

  •  5
  • Mason Wheeler  · 技术社区  · 14 年前

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

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

    This works, and I get a crosshatch pattern in clWhatever over a black background. But that's the problem. It's always black, and I can't find any way to specify a background color in case I want something other than black.

    Does anyone know how to do this?

    1 回复  |  直到 14 年前
        1
  •  9
  •   Deltics    14 年前

    阴影画笔的颜色是 前景 颜色-图案填充本身的颜色。

    当使用阴影画笔时,背景色是单独设置的,据我所知,不作为 画布对象 因此需要使用Windows GDI API 设置颜色 ()函数。

    例如,要在白色背景上绘制红色阴影,请在使用画布画笔绘制之前添加一个调用以设置背景颜色:

    image1.Canvas.brush.Style := bsDiagCross;
    image1.canvas.brush.color := clRed;
    
    SetBkColor(image1.Canvas.Handle, ColorToRGB(clWhite));
    image1.canvas.FillRect(image1.clientrect);
    

    [更新:] 注: 在Delphi2010(可能还有更早的版本)中,您应该调用 设置颜色 ()设置画笔属性后。Internally when the canvas creates it's brush it calls 设置颜色 () which tramples on any explicit calls to 设置颜色 ()在引用之前 画布画笔 . 创建内部画布时的时间,或内部使用 设置颜色 (),似乎在Delphi2006(测试原始帖子时使用)和Delphi2010之间发生了变化。不管是什么原因,在使用之前立即调用setbkcolor显然更可靠。