SharpDx Direct2D在彼此之上绘制图层

时间:2017-07-25 13:23:28

标签: c# sharpdx direct2d

我正在使用sharpDx渲染控件创建一个应用程序,我想使用Direct2d rendertarget在控件中绘制多个图层,并且所有图层都应该是可见的。但问题是当我调用rendertarget.Clear(Color.Transparent)时,它用黑色清除屏幕,我看不到其他图层。如果我不调用Clear方法,那么它不会清除当前图层,我使用鼠标移动绘制线条,因此需要清除图层。我不能每次都绘制每一层,因为它可能有数千个对象要绘制,这可能会减慢应用程序。 那么如何清除透明背景的图层,这样我可以同时看到其他图层?或者还有其他方法吗?

//示例代码

if(!newObject)
DrawAllGeometry(renderTarget, strokeWidth);
else
{
    layer = new Layer(renderTarget, renderTarget.Size);
    var layerParam = new LayerParameters() { ContentBounds = RectangleF.Infinite };
    renderTarget.PushLayer(ref layerParam, layer);
    renderTarget.Clear(Color.Transparent); /* This code makes the screen black. I want this layer transparent, so i can see drawings of DrawAllGeometry() */
    renderTarget.DrawRectangle(new RectangleF(canvasSP.X, -canvasSP.Y, width, height), new SolidColorBrush(renderTarget, Color.Green), strokeWidth * 5);
renderTarget.PopLayer();
}

0 个答案:

没有答案