Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Shapes / Polyline.cs / 1305600 / 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 // 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)); } } 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
- remotingproxy.cs
- SerTrace.cs
- InternalResources.cs
- TextCompositionEventArgs.cs
- Span.cs
- SupportsEventValidationAttribute.cs
- VariableExpressionConverter.cs
- DocumentViewerBase.cs
- BehaviorEditorPart.cs
- FileLevelControlBuilderAttribute.cs
- StatusBar.cs
- EpmHelper.cs
- Utils.cs
- PropertyChangedEventManager.cs
- BamlRecordReader.cs
- SeekableReadStream.cs
- Translator.cs
- CharKeyFrameCollection.cs
- NavigationService.cs
- FragmentQueryKB.cs
- MetadataCacheItem.cs
- SmiEventSink_Default.cs
- DataGridViewRowCancelEventArgs.cs
- InitializationEventAttribute.cs
- EdmConstants.cs
- ConfigXmlCDataSection.cs
- ParameterRefs.cs
- TraceHandlerErrorFormatter.cs
- BindingCompleteEventArgs.cs
- Registration.cs
- HashStream.cs
- AuthorizationSection.cs
- Lookup.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- _NegotiateClient.cs
- Win32SafeHandles.cs
- NavigationPropertyEmitter.cs
- ButtonBaseAutomationPeer.cs
- Point4DConverter.cs
- CollectionDataContractAttribute.cs
- EdmToObjectNamespaceMap.cs
- HttpCachePolicy.cs
- TableLayout.cs
- Privilege.cs
- SpellerError.cs
- ConnectionStringSettings.cs
- Monitor.cs
- GridLengthConverter.cs
- EllipseGeometry.cs
- ResXFileRef.cs
- _IPv4Address.cs
- DataTableTypeConverter.cs
- CodeTypeReferenceCollection.cs
- _RequestCacheProtocol.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- CombinedGeometry.cs
- QueryCacheKey.cs
- AttributeCollection.cs
- sapiproxy.cs
- CompatibleComparer.cs
- PlaceHolder.cs
- ValueUtilsSmi.cs
- EntityDataSourceState.cs
- _SingleItemRequestCache.cs
- HttpDictionary.cs
- HtmlAnchor.cs
- SynchronousReceiveElement.cs
- ObjectViewFactory.cs
- TargetConverter.cs
- NonParentingControl.cs
- NullRuntimeConfig.cs
- HTTPNotFoundHandler.cs
- ApplicationActivator.cs
- DetailsViewRowCollection.cs
- RadioButtonList.cs
- OdbcErrorCollection.cs
- NestPullup.cs
- CompilerCollection.cs
- RemotingServices.cs
- UpdateProgress.cs
- Compress.cs
- XD.cs
- ErrorStyle.cs
- WebPageTraceListener.cs
- FilterQuery.cs
- FolderBrowserDialogDesigner.cs
- ParameterCollection.cs
- TemplateXamlParser.cs
- ConversionContext.cs
- CollectionBase.cs
- MultiAsyncResult.cs
- ResourceWriter.cs
- SafeViewOfFileHandle.cs
- XmlArrayAttribute.cs
- ConfigurationSection.cs
- BitmapFrameDecode.cs
- CharEntityEncoderFallback.cs
- EntityContainerEmitter.cs
- Debug.cs
- BitmapEffectCollection.cs