Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Framework / MS / Internal / Controls / InkCanvasFeedbackAdorner.cs / 1 / InkCanvasFeedbackAdorner.cs
//---------------------------------------------------------------------------- // // File: InkCanvasFeedbackAdorner.cs // // Description: // A class which is used as the feedback adorner of the InkCanvas selection // // Features: // // History: // 1/27/2005 waynezen: Created // // Copyright (C) 2001 by Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using MS.Internal; using System; using System.Diagnostics; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Media; namespace MS.Internal.Controls { ////// InkCanvasFeedbackAdorner /// internal class InkCanvasFeedbackAdorner : Adorner { // No default constructor private InkCanvasFeedbackAdorner() : base (null) { } ////// InkCanvasFeedbackAdorner Constructor /// /// The adorned InkCanvas internal InkCanvasFeedbackAdorner(InkCanvas inkCanvas) : base(( inkCanvas != null ? inkCanvas.InnerCanvas : null )) { if ( inkCanvas == null ) throw new ArgumentNullException("inkCanvas"); // Initialize the internal data _inkCanvas = inkCanvas; _adornerBorderPen = new Pen(Brushes.Black, 1.0); DoubleCollection dashes = new DoubleCollection( ); dashes.Add(4.5); dashes.Add(4.5); _adornerBorderPen.DashStyle = new DashStyle(dashes, 2.25); _adornerBorderPen.DashCap = PenLineCap.Flat; } ////// The overridden GetDesiredTransform method /// public override GeneralTransform GetDesiredTransform(GeneralTransform transform) { if ( transform == null ) { throw new ArgumentNullException("transform"); } VerifyAccess(); GeneralTransformGroup desiredTransform = new GeneralTransformGroup(); desiredTransform.Children.Add(transform); // Check if we need translate the adorner. if ( !DoubleUtil.AreClose(_offsetX, 0) || !DoubleUtil.AreClose(_offsetY, 0) ) { desiredTransform.Children.Add(new TranslateTransform(_offsetX, _offsetY)); } return desiredTransform; } ////// The OnBoundsUpdated method /// /// private void OnBoundsUpdated(Rect rect) { VerifyAccess(); // Check if the rectangle has been changed. if ( rect != _previousRect ) { Size newSize; double offsetX; double offsetY; bool invalidArrange = false; if ( !rect.IsEmpty ) { double offset = BorderMargin + CornerResizeHandleSize / 2; Rect adornerRect = Rect.Inflate(rect, offset, offset); newSize = new Size(adornerRect.Width, adornerRect.Height); offsetX = adornerRect.Left; offsetY = adornerRect.Top; } else { newSize = new Size(0, 0); offsetX = 0; offsetY = 0; } // Check if the size has been changed if ( _frameSize != newSize ) { _frameSize = newSize; invalidArrange = true; } if ( !DoubleUtil.AreClose(_offsetX, offsetX) || !DoubleUtil.AreClose(_offsetY, offsetY) ) { _offsetX = offsetX; _offsetY = offsetY; invalidArrange = true; } if ( invalidArrange ) { InvalidateMeasure(); InvalidateVisual(); //ensure re-rendering UIElement parent = ((UIElement)VisualTreeHelper.GetParent(this)) as UIElement; if ( parent != null ) { ( (UIElement)VisualTreeHelper.GetParent(this) ).InvalidateArrange( ); } } _previousRect = rect; } } ////// The overridden MeasureOverride method /// /// protected override Size MeasureOverride(Size constraint) { VerifyAccess(); // return the frame size. return _frameSize; } ////// The overridden OnRender method /// /// protected override void OnRender(DrawingContext drawingContext) { // No need to invoke VerifyAccess since this method calls DrawingContext.DrawRectangle. Debug.Assert(_frameSize != new Size(0, 0)); // Draw the wire frame. drawingContext.DrawRectangle(null, _adornerBorderPen, new Rect(CornerResizeHandleSize / 2, CornerResizeHandleSize / 2, _frameSize.Width - CornerResizeHandleSize, _frameSize.Height - CornerResizeHandleSize)); } ////// The method is called by InkCanvasSelection.UpdateFeedbackRect /// /// internal void UpdateBounds(Rect rect) { // Invoke OnBoundsUpdated. OnBoundsUpdated(rect); } private InkCanvas _inkCanvas; private Size _frameSize = new Size(0, 0); private Rect _previousRect = Rect.Empty; private double _offsetX = 0; private double _offsetY = 0; private Pen _adornerBorderPen; private const int CornerResizeHandleSize = 8; private const double BorderMargin = 8f; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // // File: InkCanvasFeedbackAdorner.cs // // Description: // A class which is used as the feedback adorner of the InkCanvas selection // // Features: // // History: // 1/27/2005 waynezen: Created // // Copyright (C) 2001 by Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using MS.Internal; using System; using System.Diagnostics; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Media; namespace MS.Internal.Controls { ////// InkCanvasFeedbackAdorner /// internal class InkCanvasFeedbackAdorner : Adorner { // No default constructor private InkCanvasFeedbackAdorner() : base (null) { } ////// InkCanvasFeedbackAdorner Constructor /// /// The adorned InkCanvas internal InkCanvasFeedbackAdorner(InkCanvas inkCanvas) : base(( inkCanvas != null ? inkCanvas.InnerCanvas : null )) { if ( inkCanvas == null ) throw new ArgumentNullException("inkCanvas"); // Initialize the internal data _inkCanvas = inkCanvas; _adornerBorderPen = new Pen(Brushes.Black, 1.0); DoubleCollection dashes = new DoubleCollection( ); dashes.Add(4.5); dashes.Add(4.5); _adornerBorderPen.DashStyle = new DashStyle(dashes, 2.25); _adornerBorderPen.DashCap = PenLineCap.Flat; } ////// The overridden GetDesiredTransform method /// public override GeneralTransform GetDesiredTransform(GeneralTransform transform) { if ( transform == null ) { throw new ArgumentNullException("transform"); } VerifyAccess(); GeneralTransformGroup desiredTransform = new GeneralTransformGroup(); desiredTransform.Children.Add(transform); // Check if we need translate the adorner. if ( !DoubleUtil.AreClose(_offsetX, 0) || !DoubleUtil.AreClose(_offsetY, 0) ) { desiredTransform.Children.Add(new TranslateTransform(_offsetX, _offsetY)); } return desiredTransform; } ////// The OnBoundsUpdated method /// /// private void OnBoundsUpdated(Rect rect) { VerifyAccess(); // Check if the rectangle has been changed. if ( rect != _previousRect ) { Size newSize; double offsetX; double offsetY; bool invalidArrange = false; if ( !rect.IsEmpty ) { double offset = BorderMargin + CornerResizeHandleSize / 2; Rect adornerRect = Rect.Inflate(rect, offset, offset); newSize = new Size(adornerRect.Width, adornerRect.Height); offsetX = adornerRect.Left; offsetY = adornerRect.Top; } else { newSize = new Size(0, 0); offsetX = 0; offsetY = 0; } // Check if the size has been changed if ( _frameSize != newSize ) { _frameSize = newSize; invalidArrange = true; } if ( !DoubleUtil.AreClose(_offsetX, offsetX) || !DoubleUtil.AreClose(_offsetY, offsetY) ) { _offsetX = offsetX; _offsetY = offsetY; invalidArrange = true; } if ( invalidArrange ) { InvalidateMeasure(); InvalidateVisual(); //ensure re-rendering UIElement parent = ((UIElement)VisualTreeHelper.GetParent(this)) as UIElement; if ( parent != null ) { ( (UIElement)VisualTreeHelper.GetParent(this) ).InvalidateArrange( ); } } _previousRect = rect; } } ////// The overridden MeasureOverride method /// /// protected override Size MeasureOverride(Size constraint) { VerifyAccess(); // return the frame size. return _frameSize; } ////// The overridden OnRender method /// /// protected override void OnRender(DrawingContext drawingContext) { // No need to invoke VerifyAccess since this method calls DrawingContext.DrawRectangle. Debug.Assert(_frameSize != new Size(0, 0)); // Draw the wire frame. drawingContext.DrawRectangle(null, _adornerBorderPen, new Rect(CornerResizeHandleSize / 2, CornerResizeHandleSize / 2, _frameSize.Width - CornerResizeHandleSize, _frameSize.Height - CornerResizeHandleSize)); } ////// The method is called by InkCanvasSelection.UpdateFeedbackRect /// /// internal void UpdateBounds(Rect rect) { // Invoke OnBoundsUpdated. OnBoundsUpdated(rect); } private InkCanvas _inkCanvas; private Size _frameSize = new Size(0, 0); private Rect _previousRect = Rect.Empty; private double _offsetX = 0; private double _offsetY = 0; private Pen _adornerBorderPen; private const int CornerResizeHandleSize = 8; private const double BorderMargin = 8f; } } // 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
- SqlDataSource.cs
- SchemaNames.cs
- IdleTimeoutMonitor.cs
- URIFormatException.cs
- FontInfo.cs
- HtmlLink.cs
- ItemAutomationPeer.cs
- GridViewRowCollection.cs
- SymLanguageType.cs
- NonClientArea.cs
- Vector3DCollection.cs
- FilterEventArgs.cs
- SqlTypesSchemaImporter.cs
- AjaxFrameworkAssemblyAttribute.cs
- BufferModesCollection.cs
- GradientStop.cs
- ConstructorNeedsTagAttribute.cs
- TextServicesContext.cs
- WindowsListView.cs
- Pipe.cs
- Utils.cs
- glyphs.cs
- SignedXml.cs
- PathFigureCollectionConverter.cs
- TextDecorationLocationValidation.cs
- AlignmentYValidation.cs
- ScrollProperties.cs
- Link.cs
- ThrowHelper.cs
- Vertex.cs
- ImageDrawing.cs
- ImageClickEventArgs.cs
- DataProviderNameConverter.cs
- ActivationArguments.cs
- WindowsButton.cs
- httpstaticobjectscollection.cs
- KeyConverter.cs
- SettingsPropertyNotFoundException.cs
- StructuredTypeInfo.cs
- AsyncPostBackErrorEventArgs.cs
- DbModificationClause.cs
- SqlDataSourceSelectingEventArgs.cs
- SqlProviderManifest.cs
- MetadataItem_Static.cs
- SafeRightsManagementHandle.cs
- XmlTextReaderImpl.cs
- CorrelationValidator.cs
- ProcessModuleCollection.cs
- DataKeyCollection.cs
- Helpers.cs
- UdpDiscoveryEndpointProvider.cs
- DataConnectionHelper.cs
- ResourceIDHelper.cs
- WindowsGrip.cs
- IntegerFacetDescriptionElement.cs
- XamlFilter.cs
- Propagator.JoinPropagator.cs
- RelatedCurrencyManager.cs
- EncryptedPackageFilter.cs
- XmlSchemaSimpleContent.cs
- GridSplitter.cs
- ProvideValueServiceProvider.cs
- NotEqual.cs
- ItemCollectionEditor.cs
- AdornerPresentationContext.cs
- SelectionProviderWrapper.cs
- sitestring.cs
- Line.cs
- DataError.cs
- OleDbMetaDataFactory.cs
- MulticastNotSupportedException.cs
- Pointer.cs
- MailMessage.cs
- TextContainerHelper.cs
- PlatformNotSupportedException.cs
- DataPointer.cs
- ComponentCache.cs
- HttpEncoder.cs
- Cursor.cs
- CodeNamespaceCollection.cs
- TypeSemantics.cs
- SaveRecipientRequest.cs
- PointAnimationUsingKeyFrames.cs
- LZCodec.cs
- StrongNameKeyPair.cs
- ViewSimplifier.cs
- ButtonFieldBase.cs
- XmlDictionaryReader.cs
- ListViewUpdateEventArgs.cs
- GeneratedContractType.cs
- DisableDpiAwarenessAttribute.cs
- Track.cs
- ResourceDefaultValueAttribute.cs
- NullableBoolConverter.cs
- XmlDataSourceNodeDescriptor.cs
- CommonProperties.cs
- SourceInterpreter.cs
- SymmetricKey.cs
- FindCriteriaApril2005.cs
- SettingsProperty.cs