如何在C++Builder中绘制Direct2D透明线

how to draw a Direct2D transparent line in C++Builder

我将 C++Builder XE4 与 VCL windows 平台一起使用,并且我正在使用包装器 TDirect2DCanvas 来访问 Direct2D 函数。我正在将 GDI+ 代码移植到 Direct2D,但我一直在研究如何在 Direct2D 中绘制透明线。当我说透明时,我指的是有一条带有某种类型的 alpha 混合或透明设置的线,以便可以看到线下的图像。下面的代码创建一个 Direct2D 渐变画笔并在 Direct2D 渲染目标上绘制一条线,但没有透明度。你能展示如何设置 Brush and/or Pen 使线条绘制透明吗?谢谢

// begin drawing
Canvas2D_->BeginDraw();
try
{
TColor clrs[] = {clRed, clLime};
// create a gradient brush
DelphiInterface<ID2D1Brush> pBrush =
Canvas->CreateBrush(clrs, 1,
D2D1::Point2F(-w/2, -h/2),
D2D1::Point2F(w/2, h/2));
Canvas->Brush->Handle = pBrush;

Canvas->Pen->Width = 10;
int x=25;
Canvas->MoveTo(x, -half_h);
Canvas->LineTo(x, half_h);

}
__finally
{
// end drawing (actual screen update)
Canvas2D_->EndDraw();
} 

尝试在画笔上调用 ID2D1Brush::SetOpacity,值介于 0.0 和 1.0 之间,具体取决于您希望线条的透明度:

DelphiInterface<ID2D1Brush> pBrush = // ...
pBrush->SetOpacity(0.5);