2014-01-12 3 views
0

У меня есть программа, в которой я пытаюсь сделать изображение в Direct2D на четырехугольник, используя SlimDX и VB.net.Рисование растровых изображений через BitmapBrush на геометрию SlimDX (VB.NET)

Программа получает массив из 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 

... A BitmapBrush строится при загрузке и Bitmap может быть вынесено в порядке, но при попытке оказать на четырехугольник, я только получаю (это похоже ...) часть часть нижний правый угол.

Для справки: Вот изображение, которое я пытаюсь сделать: http://i.imgur.com/Dt3iHQ3.png

А вот код, который я пытаюсь использовать (для нанесения изображения). R - это список точек (см. Выше), а RenderBrush - это BitmapBrush, созданный из версии этого изображения 20x30.

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)) 
Смежные вопросы