本文整理汇总了C#中System.Windows.Controls.InkCanvas.Measure方法的典型用法代码示例。如果您正苦于以下问题:C# InkCanvas.Measure方法的具体用法?C# InkCanvas.Measure怎么用?C# InkCanvas.Measure使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Windows.Controls.InkCanvas
的用法示例。
在下文中一共展示了InkCanvas.Measure方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ExportToPng
public static void ExportToPng(Uri path, InkCanvas Surface)
{
if (path == null) return;
// Save current canvas transform
Transform transform = Surface.LayoutTransform;
// reset current transform (in case it is scaled or rotated)
Surface.LayoutTransform = null;
// Get the size of canvas
Size size = new Size(Surface.ActualWidth, Surface.ActualHeight);
// Measure and arrange the surface
// VERY IMPORTANT
Surface.Measure(size);
Surface.Arrange(new Rect(size));
// Create a render bitmap and push the surface to it
RenderTargetBitmap renderBitmap =
new RenderTargetBitmap(
(int)size.Width,
(int)size.Height,
96d,
96d,
PixelFormats.Pbgra32);
renderBitmap.Render(Surface);
// Create a file stream for saving image
using (FileStream outStream = new FileStream(path.LocalPath, FileMode.Create))
{
// Use png encoder for our data
PngBitmapEncoder encoder = new PngBitmapEncoder();
// push the rendered bitmap to it
encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
// save the data to the stream
encoder.Save(outStream);
}
// Restore previously saved layout
Surface.LayoutTransform = transform;
}
示例2: cloneAll
private FrameworkElement cloneAll()
{
var clone = new InkCanvas();
foreach (var stroke in stack.AllStrokes)
clone.Strokes.Add(stroke.Clone());
foreach (var child in stack.Work.Children)
{
var fe = (FrameworkElement)child;
if (child is Image)
{
var image = (Image)child;
var e = viewFor(image);
Panel.SetZIndex(e, image.tag().author == Globals.me ? 3 : 1);
clone.Children.Add(e);
}
else
{
var e = viewFor(fe);
Panel.SetZIndex(e, 4);
clone.Children.Add(e);
}
}
var size = new Size(ActualWidth, ActualHeight);
clone.Measure(size);
clone.Arrange(new Rect(size));
return clone;
}