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
- ExpressionBuilder.cs
- ExtractedStateEntry.cs
- _NestedMultipleAsyncResult.cs
- GenericRootAutomationPeer.cs
- XmlEnumAttribute.cs
- RijndaelManaged.cs
- DataGridColumnEventArgs.cs
- SiteMapSection.cs
- BooleanExpr.cs
- DbConnectionPoolCounters.cs
- ByteAnimationUsingKeyFrames.cs
- SqlGatherConsumedAliases.cs
- ListViewItemSelectionChangedEvent.cs
- XmlCollation.cs
- Ray3DHitTestResult.cs
- DataGrid.cs
- SpecialNameAttribute.cs
- CredentialSelector.cs
- TextDecorations.cs
- Math.cs
- RegexNode.cs
- BitmapEffect.cs
- ClientConfigPaths.cs
- BamlResourceSerializer.cs
- ContentType.cs
- ZoneLinkButton.cs
- ProjectionQueryOptionExpression.cs
- ExpressionQuoter.cs
- DummyDataSource.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- AdRotatorDesigner.cs
- ComponentChangedEvent.cs
- PrefixQName.cs
- IODescriptionAttribute.cs
- TextBoxBase.cs
- Utils.cs
- Debug.cs
- MetaData.cs
- MinMaxParagraphWidth.cs
- VBIdentifierTrimConverter.cs
- DataGridViewRowsAddedEventArgs.cs
- TreeNodeBindingCollection.cs
- CharStorage.cs
- AssemblyUtil.cs
- ScriptResourceHandler.cs
- CharacterMetricsDictionary.cs
- ReaderContextStackData.cs
- RadioButtonList.cs
- SwitchAttribute.cs
- XslException.cs
- RoutingExtensionElement.cs
- SpecialFolderEnumConverter.cs
- ForceCopyBuildProvider.cs
- DocumentOutline.cs
- FormatSettings.cs
- DrawingBrush.cs
- LayoutUtils.cs
- KeysConverter.cs
- UrlMappingsModule.cs
- BufferedStream.cs
- FontFamilyValueSerializer.cs
- ShaderRenderModeValidation.cs
- ImageAnimator.cs
- ImageList.cs
- TableCellAutomationPeer.cs
- oledbmetadatacollectionnames.cs
- ProcessModuleCollection.cs
- AppDomainInstanceProvider.cs
- ComponentGuaranteesAttribute.cs
- MachinePropertyVariants.cs
- GenerateTemporaryAssemblyTask.cs
- RSAOAEPKeyExchangeFormatter.cs
- IImplicitResourceProvider.cs
- FacetDescriptionElement.cs
- SqlVisitor.cs
- FixUp.cs
- SiteMapDataSourceView.cs
- XmlILIndex.cs
- ResourceContainerWrapper.cs
- XmlCharCheckingReader.cs
- ClearTypeHintValidation.cs
- UIHelper.cs
- RelatedImageListAttribute.cs
- DeflateStream.cs
- WMICapabilities.cs
- HtmlTextViewAdapter.cs
- ToolboxItemCollection.cs
- DataDocumentXPathNavigator.cs
- SecureEnvironment.cs
- PeerNameRecordCollection.cs
- SHA512CryptoServiceProvider.cs
- ObjectDataSourceDisposingEventArgs.cs
- CrossAppDomainChannel.cs
- ICspAsymmetricAlgorithm.cs
- TextTreeUndoUnit.cs
- RegexReplacement.cs
- RangeValuePattern.cs
- QuotedStringFormatReader.cs
- IntranetCredentialPolicy.cs
- QilReference.cs