本文整理汇总了C#中Canvas.UpdateLayout方法的典型用法代码示例。如果您正苦于以下问题:C# Canvas.UpdateLayout方法的具体用法?C# Canvas.UpdateLayout怎么用?C# Canvas.UpdateLayout使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Canvas
的用法示例。
在下文中一共展示了Canvas.UpdateLayout方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Convert
//.........这里部分代码省略.........
_currentDC.SetStretchBltMode((StretchMode)EndianFlip(wmfReader.ReadUInt16()));
if (record.Size > 4)
{
wmfReader.ReadBytes(2); // Optional unused field
}
break;
case RecordType.META_SETTEXTALIGN:
_currentDC.SetTextAlign(EndianFlip(wmfReader.ReadUInt16()));
if (record.Size > 4)
{
wmfReader.ReadBytes(2); // Optional unused field
}
break;
case RecordType.META_SETTEXTCOLOR:
ReadSetTextColor(wmfReader);
break;
case RecordType.META_SETWINDOWEXT:
double extY = EndianFlip(wmfReader.ReadInt16());
double extX = EndianFlip(wmfReader.ReadInt16());
_currentDC.SetWindowExt(extX, extY);
break;
case RecordType.META_SETWINDOWORG:
double orgY = EndianFlip(wmfReader.ReadInt16());
double orgX = EndianFlip(wmfReader.ReadInt16());
_currentDC.SetWindowOrg(orgX, orgY);
break;
case RecordType.META_STRETCHDIB:
ReadStretchDib(wmfReader, record.Size);
break;
case RecordType.META_TEXTOUT:
ReadTextOut(wmfReader, record.Size);
break;
default:
// Unsupported record type
System.Diagnostics.Debug.WriteLine("^ UNSUPPORTED ^");
wmfReader.ReadBytes((int)record.Size * 2 - 6);
break;
}
}
// Size canvas
if (_boundingBox.Width == 0.0 | _boundingBox.Height == 0.0)
{
Size windowExt = _currentDC.GetWindowExt();
if (windowExt.Width == 0.0 | windowExt.Height == 0.0)
{
// TODO
_rootCanvas.Width = 800;
_rootCanvas.Height = 600;
}
else
{
_rootCanvas.Width = windowExt.Width;
_rootCanvas.Height = windowExt.Height;
}
}
else
{
if (_dpiX == 0)
{
_rootCanvas.Width = _boundingBox.Width * _scale;
_rootCanvas.Height = _boundingBox.Height * _scale;
}
else
{
_rootCanvas.Width = Math.Round(
_boundingBox.Width / 1440 * _dpiX * _scale,
0,
MidpointRounding.ToEven);
_rootCanvas.Height = Math.Round(
_boundingBox.Height / 1440 * _dpiY * _scale,
0,
MidpointRounding.ToEven);
}
}
// Arrange
var area = new Size(_rootCanvas.Width, _rootCanvas.Height);
_rootCanvas.Measure(area);
_rootCanvas.Arrange(new Rect
{
Height = area.Height,
Width = area.Width
}
);
_rootCanvas.UpdateLayout();
return _rootCanvas;
}
示例2: CreateImage
/// <summary>
/// Renders a UI control into an image.
/// http://stackoverflow.com/questions/17355644/how-to-merge-two-images-and-show-in-an-image-control
/// http://code.msdn.microsoft.com/merge-multiple-on-a-single-e7cdaa76
/// </summary>
/// <param name="control"></param>
/// <param name="isWideTile"></param>
/// <returns></returns>
public static void CreateImage(UIElement control, Stream backgroundImageStream, string backgroundImage, string imagePath, SolidColorBrush backgroundColor, int maxWidth, int maxHeight)
{
// 1. Setup dimensions for wide tile.
var width = maxWidth < 0 ? 480 : maxWidth;
var height = maxHeight < 0 ? 800 : maxHeight;
var bmp = new WriteableBitmap(width, height);
// 2. Background image ?
var hasBackgroundImage = !string.IsNullOrEmpty(backgroundImage);
Image img = null;
if (hasBackgroundImage)
{
img = BuildImage(backgroundImage, width, height);
}
// 2. Create canvas based on background color.
var canvas = new Canvas();
canvas.Width = width;
canvas.Height = height;
if (!hasBackgroundImage)
canvas.Background = backgroundColor;
canvas.Children.Add(control);
canvas.Measure(new Size(width, height));
canvas.Arrange(new Rect(0, 0, width, height));
canvas.UpdateLayout();
if(hasBackgroundImage)
bmp.Render(img, null);
bmp.Render(canvas, null);
bmp.Invalidate();
// 8. Now save the image to local folder.
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
var filename = imagePath;
using (var st = new IsolatedStorageFileStream(filename, FileMode.Create, FileAccess.Write, store))
{
bmp.SaveJpeg(st, width, height, 0, 100);
st.Close();
}
}
try
{
bmp = null;
GC.Collect();
GC.WaitForPendingFinalizers();
}
catch (Exception ex)
{
Slate.Core.Logging.Logger.Error("Create Image", "Warning, attempt to clear up memory for tile image failed", ex);
}
}