Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Core / CSharp / System / Windows / Media / ImageDrawing.cs / 1 / ImageDrawing.cs
//----------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// Description: ImageDrawing represents a drawing operation that renders
// an image into a destination rectangle.
//
// History:
//
// 2004/11/17 : timothyc - Created it.
//
//---------------------------------------------------------------------------
using System.Diagnostics;
using System.Windows.Media.Imaging;
using MS.Internal;
namespace System.Windows.Media
{
///
/// ImageDrawing represents a drawing operation that renders an image into
/// a destination rectangle
///
public sealed partial class ImageDrawing : Drawing
{
#region Constructors
///
/// Default ImageDrawing constructor.
/// Constructs an object with all properties set to their default values
///
public ImageDrawing()
{
}
///
/// Two-argument ImageDrawing constructor.
/// Constructs an object with the ImageSource and Rect properties
/// set to the value of their respective arguments.
///
public ImageDrawing(ImageSource imageSource, Rect rect)
{
ImageSource = imageSource;
Rect = rect;
}
#endregion
#region Internal methods
///
/// Calls methods on the DrawingContext that are equivalent to the
/// Drawing with the Drawing's current value.
///
internal override void WalkCurrentValue(DrawingContextWalker ctx)
{
// We avoid unneccessary ShouldStopWalking checks based on assumptions
// about when ShouldStopWalking is set. Guard that assumption with an
// assertion. See DrawingGroup.WalkCurrentValue comment for more details.
ctx.DrawImage(
ImageSource,
Rect
);
}
///
/// Image drawings require realization updates if the image source is a DrawingImage.
///
internal override void PrecomputeCore()
{
ImageSource source = ImageSource;
if (source != null)
{
source.Precompute();
RequiresRealizationUpdates = source.RequiresRealizationUpdates;
}
else
{
RequiresRealizationUpdates = false;
}
}
///
/// Pushes realization updates into DrawingImage ImageSources.
///
internal override void UpdateRealizations(RealizationContext realizationContext)
{
if (RequiresRealizationUpdates)
{
ImageSource imageSource = ImageSource;
Debug.Assert(imageSource != null, "Otherwise RequiresRealizationUpdates would be false.");
Rect rectangle = Rect;
Size imageSize = imageSource.Size;
if (!DoubleUtil.AreClose(imageSize.Width, 0) &&
!DoubleUtil.AreClose(imageSize.Height, 0))
{
Matrix scale = Matrix.CreateScaling(
rectangle.Width / imageSize.Width,
rectangle.Height / imageSize.Height);
realizationContext.TransformStack.Push(ref scale, true);
imageSource.UpdateRealizations(realizationContext);
realizationContext.TransformStack.Pop();
}
}
}
#endregion Internal methods
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//----------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// Description: ImageDrawing represents a drawing operation that renders
// an image into a destination rectangle.
//
// History:
//
// 2004/11/17 : timothyc - Created it.
//
//---------------------------------------------------------------------------
using System.Diagnostics;
using System.Windows.Media.Imaging;
using MS.Internal;
namespace System.Windows.Media
{
///
/// ImageDrawing represents a drawing operation that renders an image into
/// a destination rectangle
///
public sealed partial class ImageDrawing : Drawing
{
#region Constructors
///
/// Default ImageDrawing constructor.
/// Constructs an object with all properties set to their default values
///
public ImageDrawing()
{
}
///
/// Two-argument ImageDrawing constructor.
/// Constructs an object with the ImageSource and Rect properties
/// set to the value of their respective arguments.
///
public ImageDrawing(ImageSource imageSource, Rect rect)
{
ImageSource = imageSource;
Rect = rect;
}
#endregion
#region Internal methods
///
/// Calls methods on the DrawingContext that are equivalent to the
/// Drawing with the Drawing's current value.
///
internal override void WalkCurrentValue(DrawingContextWalker ctx)
{
// We avoid unneccessary ShouldStopWalking checks based on assumptions
// about when ShouldStopWalking is set. Guard that assumption with an
// assertion. See DrawingGroup.WalkCurrentValue comment for more details.
ctx.DrawImage(
ImageSource,
Rect
);
}
///
/// Image drawings require realization updates if the image source is a DrawingImage.
///
internal override void PrecomputeCore()
{
ImageSource source = ImageSource;
if (source != null)
{
source.Precompute();
RequiresRealizationUpdates = source.RequiresRealizationUpdates;
}
else
{
RequiresRealizationUpdates = false;
}
}
///
/// Pushes realization updates into DrawingImage ImageSources.
///
internal override void UpdateRealizations(RealizationContext realizationContext)
{
if (RequiresRealizationUpdates)
{
ImageSource imageSource = ImageSource;
Debug.Assert(imageSource != null, "Otherwise RequiresRealizationUpdates would be false.");
Rect rectangle = Rect;
Size imageSize = imageSource.Size;
if (!DoubleUtil.AreClose(imageSize.Width, 0) &&
!DoubleUtil.AreClose(imageSize.Height, 0))
{
Matrix scale = Matrix.CreateScaling(
rectangle.Width / imageSize.Width,
rectangle.Height / imageSize.Height);
realizationContext.TransformStack.Push(ref scale, true);
imageSource.UpdateRealizations(realizationContext);
realizationContext.TransformStack.Pop();
}
}
}
#endregion Internal methods
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Int16KeyFrameCollection.cs
- ShaderRenderModeValidation.cs
- FileIOPermission.cs
- DataGridViewRowCancelEventArgs.cs
- TextControl.cs
- SQLInt16.cs
- CustomAttribute.cs
- CustomAttributeBuilder.cs
- TablePatternIdentifiers.cs
- FontWeightConverter.cs
- GlobalItem.cs
- TypeSemantics.cs
- ThreadStateException.cs
- UrlPropertyAttribute.cs
- ReadOnlyActivityGlyph.cs
- GlyphingCache.cs
- SafePEFileHandle.cs
- XmlSchemaProviderAttribute.cs
- DbExpressionRules.cs
- CodeBlockBuilder.cs
- DataGridCellEditEndingEventArgs.cs
- NetCodeGroup.cs
- Hex.cs
- DataGridViewDataConnection.cs
- InputProviderSite.cs
- TypedTableHandler.cs
- Padding.cs
- Package.cs
- XamlLoadErrorInfo.cs
- StringValidator.cs
- UriExt.cs
- SessionStateSection.cs
- Base64Decoder.cs
- Parameter.cs
- QuaternionValueSerializer.cs
- SizeConverter.cs
- BinaryObjectReader.cs
- SqlUtils.cs
- WindowsMenu.cs
- Point4D.cs
- Timer.cs
- Assembly.cs
- MetabaseReader.cs
- MetadataArtifactLoaderComposite.cs
- Byte.cs
- CacheMemory.cs
- DbConvert.cs
- ListComponentEditorPage.cs
- SmiContextFactory.cs
- TransactionFlowOption.cs
- TypedElement.cs
- ContextProperty.cs
- Emitter.cs
- XmlSchemaNotation.cs
- MeshGeometry3D.cs
- If.cs
- ExpressionBuilderCollection.cs
- DataGridViewCheckBoxCell.cs
- NTAccount.cs
- ComplexObject.cs
- ValidatedControlConverter.cs
- HierarchicalDataSourceConverter.cs
- TreeNodeEventArgs.cs
- SpeechEvent.cs
- HtmlCalendarAdapter.cs
- TcpServerChannel.cs
- ProviderManager.cs
- EventManager.cs
- TagPrefixInfo.cs
- Rectangle.cs
- OracleDataAdapter.cs
- StagingAreaInputItem.cs
- SqlInfoMessageEvent.cs
- ImmComposition.cs
- FeatureSupport.cs
- ReadContentAsBinaryHelper.cs
- FocusWithinProperty.cs
- NoResizeSelectionBorderGlyph.cs
- OdbcErrorCollection.cs
- TextProperties.cs
- FrameworkContentElement.cs
- OperationResponse.cs
- ServerValidateEventArgs.cs
- GridSplitter.cs
- SafeViewOfFileHandle.cs
- XmlSchemaExternal.cs
- ImageSourceConverter.cs
- BaseAppDomainProtocolHandler.cs
- UpdatePanel.cs
- DataGridViewRowPrePaintEventArgs.cs
- PathSegmentCollection.cs
- CompoundFileIOPermission.cs
- QuaternionRotation3D.cs
- ObjectSecurity.cs
- BasePattern.cs
- Message.cs
- SafeProcessHandle.cs
- ColorConverter.cs
- HwndKeyboardInputProvider.cs
- OdbcFactory.cs