本文整理汇总了C#中Arc.UpdateLayout方法的典型用法代码示例。如果您正苦于以下问题:C# Arc.UpdateLayout方法的具体用法?C# Arc.UpdateLayout怎么用?C# Arc.UpdateLayout使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Arc
的用法示例。
在下文中一共展示了Arc.UpdateLayout方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Draw
//.........这里部分代码省略.........
if (mi == null) continue;
var f = new Arc
{
Width = Size - (ArrowArcSize*2) - 3,
Height = Size - (ArrowArcSize*2) - 3,
HorizontalAlignment = HorizontalAlignment.Center,
VerticalAlignment = VerticalAlignment.Center,
Stretch = Stretch.None,
StartAngle = i*a,
StrokeThickness = 0,
Stroke = null,
EndAngle = (i + 1)*a - 1,
Tag = i
};
if (mi.Fill == null) mi.Fill = Brushes.Transparent;
f.Fill = mi.Fill;
f.ArcThickness = ItemSize;
f.ArcThicknessUnit = UnitType.Pixel;
f.MouseDown += (sender, e) => SelectItem(mi);
//var eventAsObservable = Observable.FromEventPattern<TouchEventArgs>(f, "TouchDown");
//eventAsObservable.Throttle(TimeSpan.FromMilliseconds(200)).Subscribe(k => Execute.OnUIThread(() => SelectItem(mi)));
// Only subscribe to TouchDown on Windows 7: On Windows 8, it causes
var win8Version = new Version(6, 2, 9200, 0);
if (Environment.OSVersion.Platform == PlatformID.Win32NT &&
Environment.OSVersion.Version < win8Version)
{
f.TouchDown += (e, si) => SelectItem(mi);
}
//f.TouchDown += (sender, e) => SelectItem(mi);
gArcs.Children.Add(f);
f.UpdateLayout();
var sp = new StackPanel {Opacity = 0, IsHitTestVisible = false};
if (mi.Element != null)
{
var vb = new Viewbox {Width = 20, Height = 20, Stretch = Stretch.Uniform};
var pa = new Path {Data = Geometry.Parse(mi.Element), Fill = Brushes.Black};
vb.Child = pa;
sp.Children.Add(vb);
}
else if (!string.IsNullOrEmpty(mi.Icon))
{
var img = new Image {Width = 20, Height = 20, Stretch = Stretch.UniformToFill};
var binding = new Binding {Source = mi, Path = new PropertyPath("Icon"), Mode = BindingMode.OneWay};
//img.Source = new BitmapImage(new Uri(mi.Icon, UriKind.RelativeOrAbsolute));
img.SetBinding(Image.SourceProperty, binding);
sp.Children.Add(img);
}
else
{
var b = new Border {Background = null, Width = 20, Height = 20};
sp.Children.Add(b);
}
var tb = new TextBlock {Text = mi.Title};
var bind = new Binding {Source = mi, Path = new PropertyPath("Title"), Mode = BindingMode.OneWay};
tb.SetBinding(TextBlock.TextProperty, bind);
var r = MenuCenterSize/2 + ItemSize - 10;
var dX = r*Math.Sin((i + 0.5)*a*dDegToRad);
// We invert the Y coordinate, because the origin in controls
// is the upper left corner, rather than the lower left