用空中

时间:2018-03-14 16:39:17

标签: vb.net directx rendering sharpdx

我必须在屏幕上渲染一个多边形(见下图),并填充一个空的中心。我目前使用这段代码:

  Using geo As New PathGeometry(m_DeviceContext.Factory)
         Dim sink1 As GeometrySink
         sink1 = geo.Open()
         sink1.BeginFigure(array(0), New FigureBegin())
         sink1.AddLines(array)
         sink1.EndFigure(New FigureEnd())

         sink1.BeginFigure(array2(0), New FigureBegin())
         sink1.AddLines(array2)
         sink1.EndFigure(New FigureEnd())

         sink1.Close()
         Dim colorgdi As System.Drawing.Color = CType(brush, SolidBrush).Color
         Dim sharpDXColor As SharpDX.Color = New SharpDX.Color(colorgdi.R, colorgdi.G, colorgdi.B, CByte(alpha))
         Using brushDX As New SolidColorBrush(m_DeviceContext, sharpDXColor)
            DeviceContext.FillGeometry(geo, brushDX)
         End Using
         sink1.Dispose()
      End Using

其中array是外边缘,array2是内边缘。但是,这个块代码确实有效,但不是每次都有效,具体取决于我传入的数组。数组的长度可能为10000点,将所有行连接在一起。

所以这是我期待在屏幕上看到的照片的照片:

Image I expect to see

以下是我使用上面代码在屏幕上绘制的内容:

Image I really see

我的代码是否有问题?可能的原因是什么可以使它在某些情况下起作用而不在其他情况下起作用?

提前致谢。

0 个答案:

没有答案