Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / System / Windows / Shapes / Polygon.cs / 1 / Polygon.cs
//----------------------------------------------------------------------------
// File: Polygon.cs
//
// Description:
// Implementation of Polygon shape element.
//
// History:
// 05/30/02 - AdSmith - 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 polygon shape element
/// This element (like all shapes) belongs under a Canvas,
/// and will be presented by the parent canvas.
/// Since a Polygon is really a polyline which closes its path
///
public sealed class Polygon : Shape
{
#region Constructors
///
/// Instantiates a new instance of a polygon.
///
public Polygon()
{
}
#endregion Constructors
#region Dynamic Properties
///
/// Points property
///
public static readonly DependencyProperty PointsProperty = DependencyProperty.Register(
"Points", typeof(PointCollection), typeof(Polygon),
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(Polygon),
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 polygon that defines this shape
///
protected override Geometry DefiningGeometry
{
get
{
return _polygonGeometry;
}
}
#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)
{
_polygonGeometry = Geometry.Empty;
return;
}
// Create the polygon PathGeometry
// ISSUE-[....]-07/11/2003 - Bug 859068
// The constructor for PathFigure that takes a PointCollection is internal in the Core
// so the below causes an A/V. Consider making it public.
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));
}
pathFigure.IsClosed = true;
}
PathGeometry polygonGeometry = new PathGeometry();
polygonGeometry.Figures.Add(pathFigure);
// Set FillRule
polygonGeometry.FillRule = FillRule;
_polygonGeometry = polygonGeometry;
}
#endregion Internal Methods
#region Private Methods and Members
private Geometry _polygonGeometry;
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------------------------
// File: Polygon.cs
//
// Description:
// Implementation of Polygon shape element.
//
// History:
// 05/30/02 - AdSmith - 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 polygon shape element
/// This element (like all shapes) belongs under a Canvas,
/// and will be presented by the parent canvas.
/// Since a Polygon is really a polyline which closes its path
///
public sealed class Polygon : Shape
{
#region Constructors
///
/// Instantiates a new instance of a polygon.
///
public Polygon()
{
}
#endregion Constructors
#region Dynamic Properties
///
/// Points property
///
public static readonly DependencyProperty PointsProperty = DependencyProperty.Register(
"Points", typeof(PointCollection), typeof(Polygon),
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(Polygon),
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 polygon that defines this shape
///
protected override Geometry DefiningGeometry
{
get
{
return _polygonGeometry;
}
}
#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)
{
_polygonGeometry = Geometry.Empty;
return;
}
// Create the polygon PathGeometry
// ISSUE-[....]-07/11/2003 - Bug 859068
// The constructor for PathFigure that takes a PointCollection is internal in the Core
// so the below causes an A/V. Consider making it public.
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));
}
pathFigure.IsClosed = true;
}
PathGeometry polygonGeometry = new PathGeometry();
polygonGeometry.Figures.Add(pathFigure);
// Set FillRule
polygonGeometry.FillRule = FillRule;
_polygonGeometry = polygonGeometry;
}
#endregion Internal Methods
#region Private Methods and Members
private Geometry _polygonGeometry;
#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
- LocalValueEnumerator.cs
- ClusterSafeNativeMethods.cs
- DBSchemaRow.cs
- SystemWebSectionGroup.cs
- DifferencingCollection.cs
- ExeConfigurationFileMap.cs
- IgnoreSectionHandler.cs
- RepeatEnumerable.cs
- Classification.cs
- ADMembershipProvider.cs
- RestClientProxyHandler.cs
- CompilerTypeWithParams.cs
- UInt16Converter.cs
- TextRange.cs
- TextTreeInsertElementUndoUnit.cs
- TextHidden.cs
- DataSourceControl.cs
- StateInitializationDesigner.cs
- TextElement.cs
- Lease.cs
- PreservationFileReader.cs
- DataStreams.cs
- DataGridTextBoxColumn.cs
- Update.cs
- StorageConditionPropertyMapping.cs
- PriorityBindingExpression.cs
- CompositeFontParser.cs
- ConnectionConsumerAttribute.cs
- XhtmlTextWriter.cs
- _LazyAsyncResult.cs
- WebPartManagerInternals.cs
- Point3DCollection.cs
- FloaterBaseParaClient.cs
- MetadataException.cs
- SafeArrayRankMismatchException.cs
- CompareValidator.cs
- ExternalCalls.cs
- IProvider.cs
- RelationshipFixer.cs
- NativeMethods.cs
- XmlCustomFormatter.cs
- NullableIntMinMaxAggregationOperator.cs
- FileSystemEnumerable.cs
- Evaluator.cs
- ToolbarAUtomationPeer.cs
- SelectedGridItemChangedEvent.cs
- HScrollBar.cs
- DisplayNameAttribute.cs
- ListItemParagraph.cs
- ReadOnlyCollectionBase.cs
- Timeline.cs
- WindowClosedEventArgs.cs
- DisplayMemberTemplateSelector.cs
- SmiContext.cs
- CombinedTcpChannel.cs
- SettingsProperty.cs
- FixedSOMTextRun.cs
- PipelineComponent.cs
- HtmlCommandAdapter.cs
- MissingSatelliteAssemblyException.cs
- Ray3DHitTestResult.cs
- DesignSurfaceCollection.cs
- UICuesEvent.cs
- TextServicesCompartmentContext.cs
- prefixendpointaddressmessagefiltertable.cs
- PasswordRecovery.cs
- BamlLocalizableResourceKey.cs
- SettingsAttributeDictionary.cs
- TimeSpanConverter.cs
- DataBoundLiteralControl.cs
- PointIndependentAnimationStorage.cs
- CalloutQueueItem.cs
- TextHidden.cs
- TouchFrameEventArgs.cs
- MasterPage.cs
- Transform3D.cs
- CursorConverter.cs
- LogicalChannel.cs
- LinqToSqlWrapper.cs
- GeometryCombineModeValidation.cs
- LicFileLicenseProvider.cs
- CreateUserWizardStep.cs
- DataGridItemEventArgs.cs
- BitVector32.cs
- RoleGroup.cs
- SendMailErrorEventArgs.cs
- BatchServiceHost.cs
- Separator.cs
- X509ServiceCertificateAuthentication.cs
- WorkflowMarkupSerializer.cs
- FigureParaClient.cs
- ExpressionUtilities.cs
- Material.cs
- SQLMoney.cs
- UniqueIdentifierService.cs
- AppSettingsSection.cs
- XmlSiteMapProvider.cs
- AddInControllerImpl.cs
- EmptyImpersonationContext.cs
- RandomNumberGenerator.cs