我有一个程序,我试图使用SlimDX和VB.net将Direct2D中的图像渲染到四边形上。
程序从服务器获取4个点的数组,这是一个四边形,应该将图像渲染到其上。
要点(例如)是:
points(0) = 20,10 <--Top left, where the geometry starts from
points(1) = 40,10 <-- Top right
points(2) = 40,40 <-- Bottom right
points(3) = 20,40 <-- Bottom left
...在加载时构造了BitmapBrush,并且可以渲染Bitmap,但是当尝试渲染到四边形时,我只得到(看起来......)某些部分位于右下角。
供参考:这是我想要绘制的图像: http://i.imgur.com/Dt3iHQ3.png
这是我正在尝试使用的代码(用于绘制图像)。 R是点列表(见上文),RenderBrush是从该图像的20x30版本创建的BitmapBrush。
Private Sub DrawPoly(R() As PointF, ByRef RenderBrush As SlimDX.Direct2D.BitmapBrush)
'Create the geometry
Dim Path As PathGeometry
Path = New PathGeometry(factoryD2D)
Console.Clear()
'Get a handle to the Geometry
Dim Geometry = Path.Open()
'Set UP Geometry
Geometry.BeginFigure(R(0), FigureBegin.Filled)
Geometry.AddLines(R)
Geometry.EndFigure(FigureEnd.Closed)
Geometry.Close()
'Render
D2DRenderTarget.FillGeometry(Path, RenderBrush)
'and GC
Geometry.Dispose()
Path.Dispose()
End Sub
提前感谢您的帮助!
答案 0 :(得分:0)
我明白了。要使其绘制到几何体上,您需要设置如下的转换矩阵:
Matrix3x2.Multiply(Matrix3x2.Translation(Point_To_Move_To), Matrix3x2.Rotation(Rotation, Point_To_Rotate_Around))