Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Themes / Aero / Microsoft / Windows / Themes / ProgressBarHighlightConverter.cs / 1 / ProgressBarHighlightConverter.cs
//---------------------------------------------------------------------------- // // Copyright (C) by Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.Globalization; using System.Threading; using System.Windows; using System.Windows.Controls.Primitives; using System.Windows.Data; using System.Windows.Media; using System.Windows.Media.Animation; namespace Microsoft.Windows.Themes { ////// The ProgressBarHighlightConverter class /// public class ProgressBarHighlightConverter : IMultiValueConverter { ////// Creates the brush for the ProgressBar /// /// ForegroundBrush, IsIndeterminate, Width, Height /// /// /// ///Brush for the ProgressBar public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { // // Parameter Validation // Type doubleType = typeof(double); if (values == null || (values.Length != 3) || (values[0] == null) || (values[1] == null) || (values[2] == null) || !typeof(Brush).IsAssignableFrom(values[0].GetType()) || !doubleType.IsAssignableFrom(values[1].GetType()) || !doubleType.IsAssignableFrom(values[2].GetType())) { return null; } // // Conversion // Brush brush = (Brush)values[0]; double width = (double)values[1]; double height = (double)values[2]; // if an invalid height, return a null brush if (width <= 0.0 || Double.IsInfinity(width) || Double.IsNaN(width) || height <= 0.0 || Double.IsInfinity(height) || Double.IsNaN(height) ) { return null; } DrawingBrush newBrush = new DrawingBrush(); // Create a Drawing Brush that is 2x longer than progress bar track // // +-------------+.............. // | highlight | empty : // +-------------+.............: // // This brush will animate to the right. double twiceWidth = width * 2.0; // Set the viewport and viewbox to the 2*size of the progress region newBrush.Viewport = newBrush.Viewbox = new Rect(-width, 0, twiceWidth, height); newBrush.ViewportUnits = newBrush.ViewboxUnits = BrushMappingMode.Absolute; newBrush.TileMode = TileMode.None; newBrush.Stretch = Stretch.None; DrawingGroup myDrawing = new DrawingGroup(); DrawingContext myDrawingContext = myDrawing.Open(); // Draw the highlight myDrawingContext.DrawRectangle(brush, null, new Rect(-width, 0, width, height)); // Animate the Translation TimeSpan translateTime = TimeSpan.FromSeconds(twiceWidth / 200.0); // travel at 200px /second TimeSpan pauseTime = TimeSpan.FromSeconds(1.0); // pause 1 second between animations DoubleAnimationUsingKeyFrames animation = new DoubleAnimationUsingKeyFrames(); animation.BeginTime = TimeSpan.Zero; animation.Duration = new Duration(translateTime + pauseTime); animation.RepeatBehavior = RepeatBehavior.Forever; animation.KeyFrames.Add(new LinearDoubleKeyFrame(twiceWidth, translateTime)); TranslateTransform translation = new TranslateTransform(); // Set the animation to the XProperty translation.BeginAnimation(TranslateTransform.XProperty, animation); // Set the animated translation on the brush newBrush.Transform = translation; myDrawingContext.Close(); newBrush.Drawing = myDrawing; return newBrush; } ////// Not Supported /// /// value, as produced by target /// target types /// converter parameter /// culture information ///Nothing public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { return null; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // // Copyright (C) by Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.Globalization; using System.Threading; using System.Windows; using System.Windows.Controls.Primitives; using System.Windows.Data; using System.Windows.Media; using System.Windows.Media.Animation; namespace Microsoft.Windows.Themes { ////// The ProgressBarHighlightConverter class /// public class ProgressBarHighlightConverter : IMultiValueConverter { ////// Creates the brush for the ProgressBar /// /// ForegroundBrush, IsIndeterminate, Width, Height /// /// /// ///Brush for the ProgressBar public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { // // Parameter Validation // Type doubleType = typeof(double); if (values == null || (values.Length != 3) || (values[0] == null) || (values[1] == null) || (values[2] == null) || !typeof(Brush).IsAssignableFrom(values[0].GetType()) || !doubleType.IsAssignableFrom(values[1].GetType()) || !doubleType.IsAssignableFrom(values[2].GetType())) { return null; } // // Conversion // Brush brush = (Brush)values[0]; double width = (double)values[1]; double height = (double)values[2]; // if an invalid height, return a null brush if (width <= 0.0 || Double.IsInfinity(width) || Double.IsNaN(width) || height <= 0.0 || Double.IsInfinity(height) || Double.IsNaN(height) ) { return null; } DrawingBrush newBrush = new DrawingBrush(); // Create a Drawing Brush that is 2x longer than progress bar track // // +-------------+.............. // | highlight | empty : // +-------------+.............: // // This brush will animate to the right. double twiceWidth = width * 2.0; // Set the viewport and viewbox to the 2*size of the progress region newBrush.Viewport = newBrush.Viewbox = new Rect(-width, 0, twiceWidth, height); newBrush.ViewportUnits = newBrush.ViewboxUnits = BrushMappingMode.Absolute; newBrush.TileMode = TileMode.None; newBrush.Stretch = Stretch.None; DrawingGroup myDrawing = new DrawingGroup(); DrawingContext myDrawingContext = myDrawing.Open(); // Draw the highlight myDrawingContext.DrawRectangle(brush, null, new Rect(-width, 0, width, height)); // Animate the Translation TimeSpan translateTime = TimeSpan.FromSeconds(twiceWidth / 200.0); // travel at 200px /second TimeSpan pauseTime = TimeSpan.FromSeconds(1.0); // pause 1 second between animations DoubleAnimationUsingKeyFrames animation = new DoubleAnimationUsingKeyFrames(); animation.BeginTime = TimeSpan.Zero; animation.Duration = new Duration(translateTime + pauseTime); animation.RepeatBehavior = RepeatBehavior.Forever; animation.KeyFrames.Add(new LinearDoubleKeyFrame(twiceWidth, translateTime)); TranslateTransform translation = new TranslateTransform(); // Set the animation to the XProperty translation.BeginAnimation(TranslateTransform.XProperty, animation); // Set the animated translation on the brush newBrush.Transform = translation; myDrawingContext.Close(); newBrush.Drawing = myDrawing; return newBrush; } ////// Not Supported /// /// value, as produced by target /// target types /// converter parameter /// culture information ///Nothing public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { return null; } } } // 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
- AppDomainFactory.cs
- DataGridItemAutomationPeer.cs
- XPathScanner.cs
- XmlSchemaFacet.cs
- ContextBase.cs
- CollectionChangedEventManager.cs
- Configuration.cs
- CustomWebEventKey.cs
- XmlIterators.cs
- CodeCommentStatementCollection.cs
- ToolStripDropTargetManager.cs
- BrowserTree.cs
- InputBuffer.cs
- InstancePersistenceContext.cs
- PersonalizationState.cs
- NegatedCellConstant.cs
- MaterializeFromAtom.cs
- Int16AnimationBase.cs
- CommandDevice.cs
- Vector3DKeyFrameCollection.cs
- HttpPostClientProtocol.cs
- ByteKeyFrameCollection.cs
- ProfileBuildProvider.cs
- SqlServer2KCompatibilityAnnotation.cs
- ConfigXmlText.cs
- SchemaElementDecl.cs
- TextParentUndoUnit.cs
- NativeMethodsCLR.cs
- CodeDOMProvider.cs
- ToolStripPanelRow.cs
- XmlEnumAttribute.cs
- ContextInformation.cs
- BasicHttpBindingCollectionElement.cs
- SmtpAuthenticationManager.cs
- ErrorStyle.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- SoapEnvelopeProcessingElement.cs
- SystemIPGlobalProperties.cs
- Int32AnimationBase.cs
- FindCompletedEventArgs.cs
- Helper.cs
- StringUtil.cs
- WebBrowserNavigatingEventHandler.cs
- DiscoveryDefaults.cs
- ConditionCollection.cs
- LinqDataSource.cs
- RemotingSurrogateSelector.cs
- UInt32Converter.cs
- AuthenticationManager.cs
- CompilerResults.cs
- TextBoxLine.cs
- cache.cs
- RootProfilePropertySettingsCollection.cs
- SemaphoreFullException.cs
- SortedSet.cs
- SecurityRuntime.cs
- CapabilitiesAssignment.cs
- Matrix.cs
- FileInfo.cs
- OletxCommittableTransaction.cs
- DataGridColumnStyleMappingNameEditor.cs
- HybridObjectCache.cs
- StringConverter.cs
- ItemsPanelTemplate.cs
- UriExt.cs
- TreeNodeBindingCollection.cs
- COM2AboutBoxPropertyDescriptor.cs
- InfoCardSymmetricAlgorithm.cs
- SchemeSettingElement.cs
- PolicyManager.cs
- ValidationPropertyAttribute.cs
- ExpressionConverter.cs
- XmlSiteMapProvider.cs
- SchemaImporter.cs
- SiteMapPath.cs
- Base64Stream.cs
- CustomErrorCollection.cs
- _AcceptOverlappedAsyncResult.cs
- CodeNamespace.cs
- XmlTextReaderImplHelpers.cs
- _HelperAsyncResults.cs
- SystemIPInterfaceProperties.cs
- Blend.cs
- SID.cs
- SafeRightsManagementEnvironmentHandle.cs
- CharacterBuffer.cs
- ClientCultureInfo.cs
- HttpListenerException.cs
- ScriptIgnoreAttribute.cs
- PixelFormats.cs
- InfocardChannelParameter.cs
- StateMachineHelpers.cs
- XmlCountingReader.cs
- RuleConditionDialog.cs
- Regex.cs
- DateTimeUtil.cs
- OwnerDrawPropertyBag.cs
- IdentityNotMappedException.cs
- MailDefinition.cs
- SafeNativeMethods.cs