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
- COM2ExtendedBrowsingHandler.cs
- UTF7Encoding.cs
- Substitution.cs
- AtomServiceDocumentSerializer.cs
- MaskedTextProvider.cs
- SQLByteStorage.cs
- ThicknessAnimationUsingKeyFrames.cs
- Deflater.cs
- ConnectionStringSettings.cs
- PlanCompilerUtil.cs
- OledbConnectionStringbuilder.cs
- ImageIndexConverter.cs
- ScopelessEnumAttribute.cs
- ColorAnimation.cs
- ReceiveContext.cs
- _Win32.cs
- SourceFileInfo.cs
- DetailsViewRowCollection.cs
- WebPartMovingEventArgs.cs
- DelegateTypeInfo.cs
- TargetInvocationException.cs
- CollectionViewGroupRoot.cs
- CharacterMetrics.cs
- WebPartChrome.cs
- ArgumentOutOfRangeException.cs
- NamespaceEmitter.cs
- MobileErrorInfo.cs
- MimeBasePart.cs
- EncoderBestFitFallback.cs
- CombinedGeometry.cs
- SQLGuid.cs
- DataGridBoolColumn.cs
- ModuleElement.cs
- DbCommandDefinition.cs
- IPAddressCollection.cs
- RegexCode.cs
- ChannelSinkStacks.cs
- ConfigXmlCDataSection.cs
- Visual3D.cs
- SmiSettersStream.cs
- ReflectionPermission.cs
- CustomAttributeFormatException.cs
- EventListenerClientSide.cs
- BatchServiceHost.cs
- InkPresenterAutomationPeer.cs
- XmlUrlEditor.cs
- DesignerActionVerbItem.cs
- RuntimeConfig.cs
- ThemeDirectoryCompiler.cs
- BitmapDecoder.cs
- TextBox.cs
- ProviderSettings.cs
- PolicyManager.cs
- VisualTreeHelper.cs
- InputMethod.cs
- SchemaTypeEmitter.cs
- InstanceHandle.cs
- WebPartCollection.cs
- ValidationVisibilityAttribute.cs
- BitmapCodecInfo.cs
- ButtonStandardAdapter.cs
- WindowsMenu.cs
- CalendarData.cs
- GetPageNumberCompletedEventArgs.cs
- TextTreeRootTextBlock.cs
- EntitySetDataBindingList.cs
- UdpConstants.cs
- ListItemConverter.cs
- WebRequestModuleElement.cs
- XMLSchema.cs
- Queue.cs
- DataGridViewCellStyleConverter.cs
- GeometryDrawing.cs
- XomlSerializationHelpers.cs
- XmlSchemaObject.cs
- BuildDependencySet.cs
- FreeFormDragDropManager.cs
- ToolStripArrowRenderEventArgs.cs
- QueryOptionExpression.cs
- ObjectResult.cs
- ParameterModifier.cs
- ServerProtocol.cs
- ApplicationProxyInternal.cs
- DbMetaDataCollectionNames.cs
- TPLETWProvider.cs
- TemplateNameScope.cs
- BitmapSourceSafeMILHandle.cs
- HttpRequestCacheValidator.cs
- NameValueConfigurationCollection.cs
- LogicalCallContext.cs
- DebuggerAttributes.cs
- XmlSchemaInferenceException.cs
- CSharpCodeProvider.cs
- SamlSubject.cs
- CharEntityEncoderFallback.cs
- SimpleFileLog.cs
- TextDocumentView.cs
- PageParserFilter.cs
- Highlights.cs
- NotCondition.cs