Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / System / Windows / Media / ImageBrush.cs / 1 / ImageBrush.cs
//---------------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // Description: This file contains the implementation of ImageBrush. // The ImageBrush is a TileBrush which defines its tile content // by use of an ImageSource. // // History: // // 04/29/2003 : [....] - Created it. // 01/19/2005 : [....] - Removed SizeViewboxToContent. Moved UpdateResource // to the generated file. //--------------------------------------------------------------------------- using MS.Internal; using MS.Internal.PresentationCore; using System; using System.ComponentModel; using System.ComponentModel.Design.Serialization; using System.Diagnostics; using System.Reflection; using System.Runtime.InteropServices; using System.Windows; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Media.Composition; using System.Windows.Media.Imaging; using SR=MS.Internal.PresentationCore.SR; using SRID=MS.Internal.PresentationCore.SRID; namespace System.Windows.Media { ////// ImageBrush - This TileBrush defines its content as an Image /// public sealed partial class ImageBrush : TileBrush { #region Constructors ////// Default constructor for ImageBrush. The resulting Brush has no content. /// public ImageBrush() { // We do this so that the property, when read, is consistent - not that // this will every actually affect drawing. } ////// ImageBrush Constructor where the image is set to the parameter's value /// /// The image source. public ImageBrush(ImageSource image) { ImageSource = image; } #endregion Constructors #region Protected methods ////// This node can introduce graphness /// internal override bool CanIntroduceGraphness() { if (ImageSource == null) { // If we don't have an ImageSource, we can't introduce // graphness right now, if we get an image source later // we'll precompute again. return false; } else { if (ImageSource.CanIntroduceGraphness()) { return true; } else { return false; } } } ////// Obtains the current bounds of the brush's content /// /// Output bounds of content protected override void GetContentBounds(out Rect contentBounds) { // Note, only implemented for DrawingImages. contentBounds = Rect.Empty; DrawingImage di = ImageSource as DrawingImage; if (di != null) { Drawing drawing = di.Drawing; if (drawing != null) { contentBounds = drawing.Bounds; } } } #endregion Protected methods #region Realization Support ////// Precompute is called during the frame preparation phase. Derived classes /// typically check if the brush requires realizations during this phase. /// internal override void Precompute() { ImageSource imageSource = ImageSource; if (imageSource != null) { imageSource.Precompute(); _requiresRealizationUpdates = imageSource.RequiresRealizationUpdates; } else { _requiresRealizationUpdates = false; } } ////// Checks if realization updates are required for this resource. /// internal override bool RequiresRealizationUpdates { get { return _requiresRealizationUpdates; } } ////// Derived classes must override this method and update realizations on dependent /// resources if required. /// internal override void UpdateRealizations(Rect fillShapeBounds, RealizationContext ctx) { if (_requiresRealizationUpdates) { Matrix m; ImageSource imageSource = ImageSource; Debug.Assert(imageSource != null); // Otherwise _requiresRealizationUpdates would be false. GetTileBrushMapping(fillShapeBounds, out m); ctx.TransformStack.Push(ref m, true); imageSource.UpdateRealizations(ctx); ctx.TransformStack.Pop(); } } #endregion private bool _requiresRealizationUpdates; } } // 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
- XmlSerializerAssemblyAttribute.cs
- CircleHotSpot.cs
- RadioButton.cs
- WebException.cs
- ToolStripTextBox.cs
- NetDataContractSerializer.cs
- Preprocessor.cs
- FixedPageStructure.cs
- StaticFileHandler.cs
- ResXBuildProvider.cs
- AccessKeyManager.cs
- HandlerElement.cs
- BlobPersonalizationState.cs
- ProfileSettings.cs
- XslNumber.cs
- DataMisalignedException.cs
- WhitespaceRuleReader.cs
- JsonQueryStringConverter.cs
- MemoryMappedFileSecurity.cs
- DataGridColumnCollection.cs
- EventProperty.cs
- ItemsPresenter.cs
- PropertyEmitter.cs
- LocalIdKeyIdentifierClause.cs
- TypeHelpers.cs
- DataGridViewComboBoxEditingControl.cs
- SafeCryptoHandles.cs
- CompiledAction.cs
- DesignerTextViewAdapter.cs
- DataGridViewCellConverter.cs
- Rect3D.cs
- DockingAttribute.cs
- TextInfo.cs
- DebugView.cs
- SqlNotificationRequest.cs
- EnumUnknown.cs
- EditingCommands.cs
- CapacityStreamGeometryContext.cs
- AppDomainManager.cs
- ConstructorNeedsTagAttribute.cs
- XmlNullResolver.cs
- HistoryEventArgs.cs
- XmlConvert.cs
- TeredoHelper.cs
- XmlCompatibilityReader.cs
- Int32RectConverter.cs
- Trigger.cs
- ObjectParameter.cs
- IERequestCache.cs
- ErrorHandler.cs
- TextContainerHelper.cs
- Table.cs
- SoapIgnoreAttribute.cs
- SrgsRule.cs
- UpdateManifestForBrowserApplication.cs
- CodeAttachEventStatement.cs
- CallbackValidator.cs
- StaticSiteMapProvider.cs
- WebConfigurationFileMap.cs
- WebRequestModuleElement.cs
- NamespaceEmitter.cs
- DetailsViewInsertEventArgs.cs
- ObjectKeyFrameCollection.cs
- ScrollEvent.cs
- VectorAnimationUsingKeyFrames.cs
- WebBrowserUriTypeConverter.cs
- SmtpMail.cs
- EventLogEntryCollection.cs
- MemberDomainMap.cs
- PolicyUnit.cs
- XmlSchemaAttributeGroupRef.cs
- SrgsElement.cs
- ContentPathSegment.cs
- RecordConverter.cs
- ToolboxItemCollection.cs
- ItemsPresenter.cs
- EntityTypeEmitter.cs
- PhysicalAddress.cs
- ToolboxItem.cs
- _ListenerAsyncResult.cs
- PersonalizationAdministration.cs
- Section.cs
- Speller.cs
- MenuItemAutomationPeer.cs
- TypeUnloadedException.cs
- MultiPageTextView.cs
- UnmanagedHandle.cs
- UserNameSecurityTokenProvider.cs
- SqlNotificationEventArgs.cs
- VisualStateChangedEventArgs.cs
- HttpListenerPrefixCollection.cs
- DataObject.cs
- PropertyReference.cs
- Parameter.cs
- GiveFeedbackEventArgs.cs
- FtpWebResponse.cs
- ProfileSettings.cs
- EndPoint.cs
- RegistrySecurity.cs
- TreeView.cs