我通過SharpDX使用Direct2D來做一些簡單的線條圖。我創建了一個PathGeometry,然後調用Open()來獲取一個GeometrySink並將線添加到接收器。 GeometrySinks是一次性的,所以這是我應該怎麼我想做到這一點:是否需要明確處置SharpDX.Direct2D1.GeometrySink?
var linePath = new D2D.PathGeometry(D2dFactory);
using (var sink = linePath.Open())
{
sink.BeginFigure(point0, D2D.FigureBegin.Hollow);
sink.AddLine(point1);
sink.AddLine(point2);
sink.EndFigure(D2D.FigureEnd.Open);
sink.Close();
}
此代碼的工作,但VS 2012的代碼分析說,我不應該在處置GeometrySink兩次。這真的發生在這裏嗎?也許我打電話給sink.Close()
?如果是這樣的話,我應該擺脫using()
聲明。什麼是使用GeometrySink的正確方法?
這也是我的猜想,但我想知道這是一個Direct2D的東西,還是隻是一個SharpDX的東西。你知道底層的Direct2D API是如何工作的嗎?如果我用C++寫這篇文章,我是否需要發佈GeometrySink? – shoelzer
我不後悔。我不是圖形類。 :) –