本文整理汇总了C#中System.Windows.Media.RectangleGeometry.Bind方法的典型用法代码示例。如果您正苦于以下问题:C# RectangleGeometry.Bind方法的具体用法?C# RectangleGeometry.Bind怎么用?C# RectangleGeometry.Bind使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Windows.Media.RectangleGeometry
的用法示例。
在下文中一共展示了RectangleGeometry.Bind方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetOrCreateBoxGeometry
protected override Geometry GetOrCreateBoxGeometry(Size renderSize)
{
var rect = new Rect(new Point(0, 0), renderSize);
this.SetCurrentValue(RectProperty, rect);
if (rect.Width <= 0 || rect.Height <= 0)
{
return Geometry.Empty;
}
if (this.CornerRadius.IsAllEqual())
{
// using TopLeft here as we have already checked that they are equal
if (this.BoxGeometry is RectangleGeometry)
{
return this.BoxGeometry;
}
var geometry = new RectangleGeometry();
geometry.Bind(RectangleGeometry.RectProperty)
.OneWayTo(this, RectProperty);
geometry.Bind(RectangleGeometry.RadiusXProperty)
.OneWayTo(this, CornerRadiusProperty, CornerRadiusTopLeftConverter.Default);
geometry.Bind(RectangleGeometry.RadiusYProperty)
.OneWayTo(this, CornerRadiusProperty, CornerRadiusTopLeftConverter.Default);
return geometry;
}
else
{
var geometry = new StreamGeometry();
using (var context = geometry.Open())
{
var cr = this.AdjustedCornerRadius();
var p = cr.TopLeft > 0
? new Point(cr.TopLeft + this.StrokeThickness / 2, this.StrokeThickness / 2)
: new Point(this.StrokeThickness / 2, this.StrokeThickness / 2);
context.BeginFigure(p, true, true);
p = p.WithOffset(rect.Width - cr.TopLeft - cr.TopRight, 0);
context.LineTo(p, true, true);
p = context.DrawCorner(p, cr.TopRight, cr.TopRight);
p = p.WithOffset(0, rect.Height - cr.TopRight - cr.BottomRight);
context.LineTo(p, true, true);
p = context.DrawCorner(p, -cr.BottomRight, cr.BottomRight);
p = p.WithOffset(-rect.Width + cr.BottomRight + cr.BottomLeft, 0);
context.LineTo(p, true, true);
p = context.DrawCorner(p, -cr.BottomLeft, -cr.BottomLeft);
p = p.WithOffset(0, -rect.Height + cr.TopLeft + cr.BottomLeft);
context.LineTo(p, true, true);
context.DrawCorner(p, cr.TopLeft, -cr.TopLeft);
}
geometry.Freeze();
return geometry;
}
}