本文整理汇总了C#中StrokeCollection.Clone方法的典型用法代码示例。如果您正苦于以下问题:C# StrokeCollection.Clone方法的具体用法?C# StrokeCollection.Clone怎么用?C# StrokeCollection.Clone使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StrokeCollection
的用法示例。
在下文中一共展示了StrokeCollection.Clone方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: extractGeomtry
//local calls only
public void extractGeomtry(StrokeCollection strokes, Rect bounds)
{
_bounds = bounds;
_strokes = strokes.Clone();
foreach (Stroke strk in strokes)
{
var brush = new SolidColorBrush(strk.DrawingAttributes.Color);
drawGrp.Children.Add( new GeometryDrawing( brush, null, strk.GetGeometry()) );
}
SetMarkers();
SetBounds();
}
示例2: CopySelectedData
internal InkCanvasClipboardDataFormats CopySelectedData(IDataObject dataObject)
{
InkCanvasClipboardDataFormats copiedDataFormat = InkCanvasClipboardDataFormats.None;
InkCanvasSelection inkCanvasSelection = InkCanvas.InkCanvasSelection;
StrokeCollection strokes = inkCanvasSelection.SelectedStrokes;
if (strokes.Count > 1)
{
// NTRAID#WINDOWS-1541633-2006/03/03-SAMGEO,
// order the strokes so they are in the correct z-order
// they appear in on the InkCanvas, or else they will be inconsistent
// if copied / pasted
StrokeCollection orderedStrokes = new StrokeCollection();
StrokeCollection inkCanvasStrokes = InkCanvas.Strokes; //cache to avoid multiple property gets
for (int i = 0; i < inkCanvasStrokes.Count && strokes.Count != orderedStrokes.Count; i++)
{
for (int j = 0; j < strokes.Count; j++)
{
if (inkCanvasStrokes[i] == strokes[j])
{
orderedStrokes.Add(strokes[j]);
break;
}
}
}
Debug.Assert(inkCanvasSelection.SelectedStrokes.Count == orderedStrokes.Count);
//Make a copy collection since we will alter the transform before copying the data.
strokes = orderedStrokes.Clone();
}
else
{
//we only have zero or one stroke so we don't need to order, but we
//do need to clone.
strokes = strokes.Clone();
}
List<UIElement> elements = new List<UIElement>(inkCanvasSelection.SelectedElements);
Rect bounds = inkCanvasSelection.SelectionBounds;
// Now copy the selection in the below orders.
if ( strokes.Count != 0 || elements.Count != 0 )
{
// NTRAID-WINDOWS#1412097-2005/12/08-WAYNEZEN,
// The selection should be translated to the origin (0, 0) related to its bounds.
// Get the translate transform as a relative bounds.
Matrix transform = Matrix.Identity;
transform.OffsetX = -bounds.Left;
transform.OffsetY = -bounds.Top;
// Add ISF data first.
if ( strokes.Count != 0 )
{
// Transform the strokes first.
inkCanvasSelection.TransformStrokes(strokes, transform);
ClipboardData data = new ISFClipboardData(strokes);
data.CopyToDataObject(dataObject);
copiedDataFormat |= InkCanvasClipboardDataFormats.ISF;
}
// Then add XAML data.
if ( CopySelectionInXAML(dataObject, strokes, elements, transform, bounds.Size) )
{
// We have to create an InkCanvas as a container and add all the selection to it.
copiedDataFormat |= InkCanvasClipboardDataFormats.XAML;
}
}
else
{
Debug.Assert(false , "CopySelectData: InkCanvas should have a selection!");
}
return copiedDataFormat;
}