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
- invalidudtexception.cs
- PrimaryKeyTypeConverter.cs
- loginstatus.cs
- JapaneseLunisolarCalendar.cs
- IncrementalCompileAnalyzer.cs
- HttpHandler.cs
- CodeDelegateInvokeExpression.cs
- CacheMemory.cs
- DetailsViewDeleteEventArgs.cs
- DataGridViewCell.cs
- Buffer.cs
- SafeUserTokenHandle.cs
- SessionStateSection.cs
- QilVisitor.cs
- DelayedRegex.cs
- EmptyEnumerator.cs
- EmptyEnumerable.cs
- ZipIOModeEnforcingStream.cs
- SafeHandles.cs
- XmlEncApr2001.cs
- WindowsFormsSynchronizationContext.cs
- LogAppendAsyncResult.cs
- DataGridViewDataErrorEventArgs.cs
- DataObjectEventArgs.cs
- _HTTPDateParse.cs
- DictionaryEntry.cs
- JsonReader.cs
- EllipseGeometry.cs
- TagMapCollection.cs
- ParentUndoUnit.cs
- ArrayElementGridEntry.cs
- IgnoreFileBuildProvider.cs
- StringOutput.cs
- Wildcard.cs
- TreeNodeEventArgs.cs
- SubstitutionList.cs
- DeclarativeCatalogPart.cs
- SiteMapDataSourceView.cs
- GridLength.cs
- CreatingCookieEventArgs.cs
- CommentAction.cs
- SessionParameter.cs
- ConditionalAttribute.cs
- SerializerWriterEventHandlers.cs
- FixedSOMPageConstructor.cs
- WebHostUnsafeNativeMethods.cs
- Quaternion.cs
- TextParagraphProperties.cs
- HttpProcessUtility.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- ServiceParser.cs
- Pkcs9Attribute.cs
- PropertiesTab.cs
- FixedTextSelectionProcessor.cs
- ScrollViewerAutomationPeer.cs
- PartitionResolver.cs
- MatrixAnimationBase.cs
- PolygonHotSpot.cs
- WeakEventTable.cs
- MdbDataFileEditor.cs
- ClientSponsor.cs
- DesignConnection.cs
- TextBox.cs
- Stroke2.cs
- DocumentViewerBase.cs
- ConnectionStringsExpressionBuilder.cs
- DebuggerAttributes.cs
- Mapping.cs
- QuotedPairReader.cs
- StylusEditingBehavior.cs
- FlowDocumentPage.cs
- LocatorBase.cs
- printdlgexmarshaler.cs
- PersonalizablePropertyEntry.cs
- ListViewCancelEventArgs.cs
- ProfessionalColors.cs
- ButtonFieldBase.cs
- StrongNameUtility.cs
- TextServicesDisplayAttribute.cs
- AppDomainAttributes.cs
- WebCategoryAttribute.cs
- LinkTarget.cs
- _AcceptOverlappedAsyncResult.cs
- ProfilePropertySettingsCollection.cs
- TreeNodeEventArgs.cs
- Variable.cs
- _emptywebproxy.cs
- KeySpline.cs
- AnnotationResource.cs
- PropertyToken.cs
- PropertyToken.cs
- PageBreakRecord.cs
- UIElement3DAutomationPeer.cs
- AssemblyGen.cs
- Collection.cs
- MouseEvent.cs
- HttpEncoder.cs
- InstanceOwnerQueryResult.cs
- SoapParser.cs
- CancellationTokenRegistration.cs