Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / Shapes / Polyline.cs / 1 / Polyline.cs
//----------------------------------------------------------------------------
// File: Polyline.cs
//
// Description:
// Implementation of Polyline shape element.
//
// History:
// 05/30/02 - [....] - Created.
//
// Copyright (C) 2003 by Microsoft Corporation. All rights reserved.
//
//---------------------------------------------------------------------------
using System.Windows.Shapes;
using System.Diagnostics;
using System.Windows.Threading;
using System.Windows;
using System.Windows.Media;
using MS.Internal;
using System;
namespace System.Windows.Shapes
{
///
/// The Polyline shape element
/// This element (like all shapes) belongs under a Canvas,
/// and will be presented by the parent canvas.
///
public sealed class Polyline : Shape
{
#region Constructors
///
/// Instantiates a new instance of a Polyline.
///
public Polyline()
{
}
#endregion Constructors
#region Dynamic Properties
///
/// Points property
///
public static readonly DependencyProperty PointsProperty = DependencyProperty.Register(
"Points", typeof(PointCollection), typeof(Polyline),
new FrameworkPropertyMetadata(new FreezableDefaultValueFactory(PointCollection.Empty), FrameworkPropertyMetadataOptions.AffectsMeasure | FrameworkPropertyMetadataOptions.AffectsRender));
///
/// Points property
///
public PointCollection Points
{
get
{
return (PointCollection)GetValue(PointsProperty);
}
set
{
SetValue(PointsProperty, value);
}
}
///
/// FillRule property
///
public static readonly DependencyProperty FillRuleProperty = DependencyProperty.Register(
"FillRule",
typeof(FillRule),
typeof(Polyline),
new FrameworkPropertyMetadata(
FillRule.EvenOdd,
FrameworkPropertyMetadataOptions.AffectsRender),
new ValidateValueCallback(System.Windows.Media.ValidateEnums.IsFillRuleValid)
);
///
/// FillRule property
///
public FillRule FillRule
{
get
{
return (FillRule)GetValue(FillRuleProperty);
}
set
{
SetValue(FillRuleProperty, value);
}
}
#endregion Dynamic Properties
#region Protected Methods and Properties
///
/// Get the polyline that defines this shape
///
protected override Geometry DefiningGeometry
{
get
{
return _polylineGeometry;
}
}
#endregion
#region Internal methods
internal override void CacheDefiningGeometry()
{
PointCollection pointCollection = Points;
PathFigure pathFigure = new PathFigure();
// Are we degenerate?
// Yes, if we don't have data
if (pointCollection == null)
{
_polylineGeometry = Geometry.Empty;
return;
}
// Create the Polyline PathGeometry
//
if (pointCollection.Count > 0)
{
pathFigure.StartPoint = pointCollection[0];
if (pointCollection.Count > 1)
{
Point[] array = new Point[pointCollection.Count - 1];
for (int i = 1; i < pointCollection.Count; i++)
{
array[i - 1] = pointCollection[i];
}
pathFigure.Segments.Add(new PolyLineSegment(array, true));
}
}
PathGeometry polylineGeometry = new PathGeometry();
polylineGeometry.Figures.Add(pathFigure);
// Set FillRule
polylineGeometry.FillRule = FillRule;
if (polylineGeometry.Bounds == Rect.Empty)
{
_polylineGeometry = Geometry.Empty;
}
else
{
_polylineGeometry = polylineGeometry;
}
}
#endregion Internal methods
#region Private Methods and Members
private Geometry _polylineGeometry;
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RegexMatch.cs
- IndexingContentUnit.cs
- LinqDataSourceContextEventArgs.cs
- SafeFileMapViewHandle.cs
- ComponentRenameEvent.cs
- SafeReadContext.cs
- ExpressionCopier.cs
- XmlFormatExtensionPointAttribute.cs
- TraceHandler.cs
- X509SecurityTokenAuthenticator.cs
- ModelPropertyDescriptor.cs
- TemplateControlCodeDomTreeGenerator.cs
- DetailsViewInsertEventArgs.cs
- PerformanceCounterManager.cs
- CfgRule.cs
- BitmapEffectInputConnector.cs
- XmlUrlResolver.cs
- StylusDownEventArgs.cs
- WebPartConnectionCollection.cs
- PropertyEmitterBase.cs
- DataGridViewCheckBoxColumn.cs
- Int64Storage.cs
- HtmlEncodedRawTextWriter.cs
- MouseEvent.cs
- VisualStateChangedEventArgs.cs
- XmlSchemaSimpleTypeList.cs
- ApplicationId.cs
- DocumentCollection.cs
- XmlParser.cs
- SchemaNamespaceManager.cs
- Axis.cs
- ContentFileHelper.cs
- BaseAsyncResult.cs
- WebPartHelpVerb.cs
- httpstaticobjectscollection.cs
- TextWriterTraceListener.cs
- XmlnsPrefixAttribute.cs
- UseManagedPresentationBindingElement.cs
- Ref.cs
- WSFederationHttpBindingCollectionElement.cs
- SafeSecurityHandles.cs
- ListBoxItemAutomationPeer.cs
- ProviderUtil.cs
- ProjectionCamera.cs
- RefreshPropertiesAttribute.cs
- RewritingSimplifier.cs
- Bold.cs
- XmlSchemaAny.cs
- ConfigurationStrings.cs
- WebServiceResponseDesigner.cs
- Int16.cs
- EFDataModelProvider.cs
- SafeNativeMethodsOther.cs
- ErrorFormatter.cs
- Scheduler.cs
- EntityTypeBase.cs
- DESCryptoServiceProvider.cs
- DateTimeUtil.cs
- TextStore.cs
- DurationConverter.cs
- ChtmlLinkAdapter.cs
- ResourceDescriptionAttribute.cs
- CompositionAdorner.cs
- IgnoreSectionHandler.cs
- TemplatedMailWebEventProvider.cs
- KeyMatchBuilder.cs
- ComponentResourceKey.cs
- UnsafeNativeMethods.cs
- XmlTextEncoder.cs
- UnsafeNativeMethodsTablet.cs
- XmlObjectSerializerReadContext.cs
- Msec.cs
- TemplatedAdorner.cs
- SequentialOutput.cs
- PermissionRequestEvidence.cs
- Descriptor.cs
- SectionInput.cs
- NTAccount.cs
- DataSetUtil.cs
- TextRangeSerialization.cs
- TypeConverters.cs
- ForwardPositionQuery.cs
- OutputCacheSettingsSection.cs
- Icon.cs
- RoutedPropertyChangedEventArgs.cs
- arabicshape.cs
- DataGridTableCollection.cs
- XappLauncher.cs
- Win32Exception.cs
- XhtmlBasicPanelAdapter.cs
- MarkupCompilePass1.cs
- BindingValueChangedEventArgs.cs
- SortableBindingList.cs
- TableCell.cs
- ParentQuery.cs
- HierarchicalDataBoundControl.cs
- SingleTagSectionHandler.cs
- AlgoModule.cs
- SelectionGlyph.cs
- DispatchWrapper.cs