Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / 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 : [....] - 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Paragraph.cs
- CompensationToken.cs
- MessageBox.cs
- SamlAttributeStatement.cs
- UniqueID.cs
- ColorDialog.cs
- OAVariantLib.cs
- XPathScanner.cs
- AccessText.cs
- ChineseLunisolarCalendar.cs
- FileLogRecordEnumerator.cs
- VisualTransition.cs
- printdlgexmarshaler.cs
- RenderDataDrawingContext.cs
- StringValidatorAttribute.cs
- SqlColumnizer.cs
- TextInfo.cs
- LocalizationParserHooks.cs
- Control.cs
- CodeNamespaceCollection.cs
- XmlConvert.cs
- NamespaceQuery.cs
- UpdateProgress.cs
- InsufficientMemoryException.cs
- Fault.cs
- DispatchWrapper.cs
- Pens.cs
- HtmlDocument.cs
- EntityConnection.cs
- BinaryFormatterWriter.cs
- CodeDOMUtility.cs
- InputLangChangeEvent.cs
- DataGridViewAddColumnDialog.cs
- GridPatternIdentifiers.cs
- DynamicQueryableWrapper.cs
- ControlHelper.cs
- HttpGetServerProtocol.cs
- WSFederationHttpSecurity.cs
- TreeNodeBindingCollection.cs
- connectionpool.cs
- SqlMultiplexer.cs
- RowsCopiedEventArgs.cs
- OracleConnection.cs
- ToolStripStatusLabel.cs
- StatusBarPanel.cs
- MeasureItemEvent.cs
- String.cs
- _Events.cs
- ControlAdapter.cs
- GenericWebPart.cs
- FixedFlowMap.cs
- MDIControlStrip.cs
- _NestedMultipleAsyncResult.cs
- AttributeSetAction.cs
- NoPersistProperty.cs
- ObjectManager.cs
- Substitution.cs
- WorkflowElementDialog.cs
- MgmtConfigurationRecord.cs
- HtmlInputFile.cs
- ServicePerformanceCounters.cs
- CodeTryCatchFinallyStatement.cs
- BrowserCapabilitiesCodeGenerator.cs
- VisualCollection.cs
- DataGridViewRowHeaderCell.cs
- QilNode.cs
- DataSourceDescriptorCollection.cs
- OpacityConverter.cs
- WebServiceParameterData.cs
- ReverseInheritProperty.cs
- DragDrop.cs
- Vector3DKeyFrameCollection.cs
- SelfIssuedAuthRSACryptoProvider.cs
- MetadataCollection.cs
- InputScopeConverter.cs
- SqlInfoMessageEvent.cs
- StrokeNodeData.cs
- ConfigurationCollectionAttribute.cs
- CfgParser.cs
- DataGridItem.cs
- AttachedAnnotation.cs
- CounterSample.cs
- AssemblyBuilderData.cs
- RemoteAsymmetricSignatureFormatter.cs
- FunctionOverloadResolver.cs
- FrugalList.cs
- SoapHttpTransportImporter.cs
- BaseAsyncResult.cs
- UserPreferenceChangingEventArgs.cs
- ForceCopyBuildProvider.cs
- _CookieModule.cs
- NullableDoubleMinMaxAggregationOperator.cs
- BindingRestrictions.cs
- ReferenceSchema.cs
- MemberHolder.cs
- UnicodeEncoding.cs
- UnsafeNativeMethodsPenimc.cs
- ExtenderHelpers.cs
- ObjectNavigationPropertyMapping.cs
- XPathSelectionIterator.cs