本文整理汇总了C#中Windows.UI.Xaml.Shapes.Rectangle.CreateAndPushLayerIfNecessary方法的典型用法代码示例。如果您正苦于以下问题:C# Rectangle.CreateAndPushLayerIfNecessary方法的具体用法?C# Rectangle.CreateAndPushLayerIfNecessary怎么用?C# Rectangle.CreateAndPushLayerIfNecessary使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Windows.UI.Xaml.Shapes.Rectangle
的用法示例。
在下文中一共展示了Rectangle.CreateAndPushLayerIfNecessary方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Render
internal static async Task Render(CompositionEngine compositionEngine, SharpDX.Direct2D1.RenderTarget renderTarget, FrameworkElement rootElement, Rectangle rectangle)
{
var rect = rectangle.GetBoundingRect(rootElement).ToSharpDX();
var fill = await rectangle.Fill.ToSharpDX(renderTarget, rect);
var stroke = await rectangle.Stroke.ToSharpDX(renderTarget, rect);
try
{
var layer = rectangle.CreateAndPushLayerIfNecessary(renderTarget, rootElement);
if (rectangle.RadiusX > 0 &&
rectangle.RadiusY > 0)
{
var roundedRect = new SharpDX.Direct2D1.RoundedRectangle();
roundedRect.Rect = rect;
roundedRect.RadiusX = (float)rectangle.RadiusX;
roundedRect.RadiusY = (float)rectangle.RadiusY;
if (rectangle.StrokeThickness > 0 &&
stroke != null)
{
var halfThickness = (float)(rectangle.StrokeThickness * 0.5);
roundedRect.Rect = rect.Eroded(halfThickness);
if (fill != null)
{
renderTarget.FillRoundedRectangle(roundedRect, fill);
}
renderTarget.DrawRoundedRectangle(
roundedRect,
stroke,
(float)rectangle.StrokeThickness,
rectangle.GetStrokeStyle(compositionEngine.D2DFactory));
}
else
{
renderTarget.FillRoundedRectangle(roundedRect, fill);
}
}
else
{
if (rectangle.StrokeThickness > 0 &&
stroke != null)
{
var halfThickness = (float)(rectangle.StrokeThickness * 0.5);
if (fill != null)
{
renderTarget.FillRectangle(rect.Eroded(halfThickness), fill);
}
var strokeRect = rect.Eroded(halfThickness);
renderTarget.DrawRectangle(
strokeRect,
stroke,
(float)rectangle.StrokeThickness,
rectangle.GetStrokeStyle(compositionEngine.D2DFactory));
}
else
{
renderTarget.FillRectangle(rect, fill);
}
}
if (layer != null)
{
renderTarget.PopLayer();
layer.Dispose();
}
}
finally
{
if (fill != null)
fill.Dispose();
if (stroke != null)
stroke.Dispose();
}
}