Direct2D (6) : 绘制质量
时间:2011-04-01 来源:万一
{相关方法} TDirect2DCanvas.RenderTarget.SetAntialiasMode(); TDirect2DCanvas.RenderTarget.GetAntialiasMode; {相关常量} D2D1_ANTIALIAS_MODE_PER_PRIMITIVE = 0; D2D1_ANTIALIAS_MODE_ALIASED = 1;
测试代码:
uses Direct2D, D2D1; procedure TForm1.FormCreate(Sender: TObject); begin CheckBox1.Caption := 'D2D1_ANTIALIAS_MODE_PER_PRIMITIVE'; CheckBox1.Checked := True; end; procedure TForm1.CheckBox1Click(Sender: TObject); const sArr: array[Boolean] of string = ('D2D1_ANTIALIAS_MODE_PER_PRIMITIVE', 'D2D1_ANTIALIAS_MODE_ALIASED'); begin CheckBox1.Caption := sArr[not CheckBox1.Checked]; Refresh; end; procedure TForm1.FormPaint(Sender: TObject); var dv: TDirect2DCanvas; rect: TRect; begin dv := TDirect2DCanvas.Create(Canvas, ClientRect); dv.Pen.Color := clRed; dv.Pen.Width := 25; if CheckBox1.Checked then dv.RenderTarget.SetAntialiasMode(D2D1_ANTIALIAS_MODE_PER_PRIMITIVE) else dv.RenderTarget.SetAntialiasMode(D2D1_ANTIALIAS_MODE_ALIASED); //dv.RenderTarget.SetAntialiasMode(Integer(not CheckBox1.Checked)); 可用该行代替上面四行 rect := ClientRect; InflateRect(rect, -ClientWidth div 5, -ClientHeight div 5 ); OffsetRect(rect, 0, 10); dv.BeginDraw; dv.Ellipse(rect); dv.EndDraw; dv.Free; end; procedure TForm1.FormResize(Sender: TObject); begin Repaint; end;
效果图:

相关阅读 更多 +
排行榜 更多 +