Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- IncomingWebResponseContext.cs
- MimeBasePart.cs
- NullReferenceException.cs
- TextAction.cs
- KeyInfo.cs
- TimelineGroup.cs
- Context.cs
- HwndKeyboardInputProvider.cs
- CollectionBuilder.cs
- AdCreatedEventArgs.cs
- ChtmlCommandAdapter.cs
- IsolationInterop.cs
- DocumentOrderComparer.cs
- WindowsAuthenticationEventArgs.cs
- ThreadExceptionDialog.cs
- WebPartConnectVerb.cs
- RelationshipFixer.cs
- XslCompiledTransform.cs
- WorkflowValidationFailedException.cs
- TextTreeInsertElementUndoUnit.cs
- NativeMethodsOther.cs
- CroppedBitmap.cs
- While.cs
- KeyInterop.cs
- DispatcherEventArgs.cs
- ConvertTextFrag.cs
- RequestSecurityTokenResponseCollection.cs
- bindurihelper.cs
- SessionStateModule.cs
- Pointer.cs
- SrgsDocument.cs
- DbDataRecord.cs
- Msec.cs
- RequestCacheValidator.cs
- DictionaryBase.cs
- X509ThumbprintKeyIdentifierClause.cs
- DrawListViewSubItemEventArgs.cs
- FlatButtonAppearance.cs
- HttpHandlerActionCollection.cs
- CompressStream.cs
- NativeMethods.cs
- ByteStreamBufferedMessageData.cs
- EntityDataSourceStatementEditorForm.cs
- SafeRightsManagementSessionHandle.cs
- XmlSchemaExternal.cs
- TextRunProperties.cs
- SymLanguageType.cs
- TimeStampChecker.cs
- SqlCharStream.cs
- PagesSection.cs
- BitmapImage.cs
- TypeValidationEventArgs.cs
- XmlSchemaSubstitutionGroup.cs
- CallbackValidatorAttribute.cs
- XmlReaderDelegator.cs
- DataProtectionSecurityStateEncoder.cs
- PolicyLevel.cs
- ServiceRoute.cs
- DeploymentSection.cs
- XsltSettings.cs
- WebContext.cs
- SqlVisitor.cs
- MethodExpression.cs
- ParserContext.cs
- BlockUIContainer.cs
- X509ClientCertificateAuthenticationElement.cs
- ProtocolElementCollection.cs
- PointCollection.cs
- SourceElementsCollection.cs
- RandomNumberGenerator.cs
- StylusPointPropertyInfoDefaults.cs
- DeclarativeCatalogPartDesigner.cs
- UrlAuthFailedErrorFormatter.cs
- SqlReorderer.cs
- SizeLimitedCache.cs
- RightsManagementInformation.cs
- TemporaryBitmapFile.cs
- DetailsViewPagerRow.cs
- BitmapEffectCollection.cs
- NavigationWindow.cs
- CalendarDesigner.cs
- HyperLinkDataBindingHandler.cs
- ZipIOCentralDirectoryBlock.cs
- Mapping.cs
- Win32Exception.cs
- thaishape.cs
- XsdBuildProvider.cs
- DataColumnCollection.cs
- Keywords.cs
- CombinedGeometry.cs
- DtdParser.cs
- TemplateApplicationHelper.cs
- TypeConverterAttribute.cs
- _TimerThread.cs
- EventPropertyMap.cs
- FixedTextPointer.cs
- SqlTypeSystemProvider.cs
- ObjectParameter.cs
- ComponentChangedEvent.cs
- BindingFormattingDialog.cs