直接上代码:
#include <d2d1.h> // 必须放在Vcl.Direct2D.hpp前面
#include <Vcl.Direct2D.hpp>
// ---------------------------------------------------------------------------
// 用Direct2D实现抗锯齿绘图效果
void __fastcall Line2(Vcl::Graphics::TCanvas *canvas, int X1, int Y1, int X2, int Y2)
{
if (canvas == NULL)
{
ShowMessage("Line2(Vcl::Graphics::TCanvas *canvas 为空指针");
return;
}
TDirect2DCanvas *d2dCanvas;
d2dCanvas = new TDirect2DCanvas(canvas, canvas->ClipRect);
//d2dCanvas->Pen->Color = clRed;
//d2dCanvas->Pen->Style = psSolid;
//D2D1_ANTIALIAS_MODE_PER_PRIMITIVE = 0; // 抗锯齿
//D2D1_ANTIALIAS_MODE_ALIASED = 1;
d2dCanvas->RenderTarget->SetAntialiasMode(D2D1_ANTIALIAS_MODE_PER_PRIMITIVE);
d2dCanvas->BeginDraw();
d2dCanvas->MoveTo(X1, Y1);
d2dCanvas->LineTo(X2, Y2);
//d2dCanvas->Ellipse(X1, Y1, X2, Y2);
//d2dCanvas->Rectangle(X1, Y1, X2, Y2);
d2dCanvas->EndDraw();
delete d2dCanvas;
}
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Canvas->Pen->Color = clRed;
Canvas->Pen->Style = psSolid;
Canvas->Pen->Width = 7;
Line2(Canvas, 20, 50, 300, 500);
}