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
- SocketPermission.cs
- SHA512Managed.cs
- DataGridDesigner.cs
- MethodBuilder.cs
- FixedElement.cs
- OracleInfoMessageEventArgs.cs
- ProcessInputEventArgs.cs
- Misc.cs
- StyleXamlParser.cs
- IdentityValidationException.cs
- PropertyGrid.cs
- XmlSchemaChoice.cs
- UdpReplyToBehavior.cs
- FilterQuery.cs
- MasterPageBuildProvider.cs
- SafeTokenHandle.cs
- MeshGeometry3D.cs
- ValidateNames.cs
- _ListenerAsyncResult.cs
- TextTreeExtractElementUndoUnit.cs
- ProxyHelper.cs
- ListBoxItemAutomationPeer.cs
- DatagridviewDisplayedBandsData.cs
- DataGridViewHeaderCell.cs
- EventLogInternal.cs
- AssemblyName.cs
- CheckBox.cs
- ObjectPersistData.cs
- TextRangeSerialization.cs
- WindowsToolbarAsMenu.cs
- NullEntityWrapper.cs
- SerialPort.cs
- WeakReadOnlyCollection.cs
- MediaPlayer.cs
- SymLanguageType.cs
- _ConnectionGroup.cs
- QilTypeChecker.cs
- DataGridViewCheckBoxCell.cs
- DelegateTypeInfo.cs
- ReadOnlyActivityGlyph.cs
- InvalidAsynchronousStateException.cs
- StatusBarDrawItemEvent.cs
- SqlBooleanizer.cs
- DatePickerAutomationPeer.cs
- XmlParserContext.cs
- GenericEnumConverter.cs
- UInt16Storage.cs
- ColorConvertedBitmapExtension.cs
- TableMethodGenerator.cs
- DBSchemaTable.cs
- DataGridParentRows.cs
- ErrorFormatterPage.cs
- Subtree.cs
- IssuedTokenParametersElement.cs
- EdmItemError.cs
- NoResizeSelectionBorderGlyph.cs
- HttpRuntimeSection.cs
- FileDataSourceCache.cs
- DataTableClearEvent.cs
- NavigateEvent.cs
- PaperSize.cs
- TemplateField.cs
- Domain.cs
- HttpConfigurationSystem.cs
- Transform.cs
- ProtocolViolationException.cs
- ReadWriteObjectLock.cs
- SchemaCollectionPreprocessor.cs
- OpenTypeLayout.cs
- WizardStepBase.cs
- ColorTransform.cs
- UnmanagedMemoryStreamWrapper.cs
- RoutedPropertyChangedEventArgs.cs
- DocumentPageHost.cs
- PageTheme.cs
- PersonalizationAdministration.cs
- LambdaExpression.cs
- Publisher.cs
- ResourcesGenerator.cs
- PointConverter.cs
- HttpProfileBase.cs
- SqlConnectionHelper.cs
- BulletDecorator.cs
- DataGridViewLinkColumn.cs
- TransformedBitmap.cs
- VarInfo.cs
- TableLayoutPanelCellPosition.cs
- CqlErrorHelper.cs
- TypeHelper.cs
- HtmlTableCellCollection.cs
- SettingsAttributes.cs
- DetailsViewModeEventArgs.cs
- DrawingContextWalker.cs
- _ProxyRegBlob.cs
- NamespaceEmitter.cs
- AsyncMethodInvoker.cs
- InputElement.cs
- WeakRefEnumerator.cs
- Base64Stream.cs
- ButtonChrome.cs