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
- ByeMessage11.cs
- WebPartCancelEventArgs.cs
- StylusPointProperties.cs
- DbProviderFactories.cs
- EntityDataSourceDataSelectionPanel.cs
- FileRecordSequenceHelper.cs
- InkCanvasSelection.cs
- EnumerableWrapperWeakToStrong.cs
- AvtEvent.cs
- CurrentChangingEventArgs.cs
- PreservationFileReader.cs
- Timer.cs
- XamlStackWriter.cs
- ComponentRenameEvent.cs
- XmlSchemaAnyAttribute.cs
- GiveFeedbackEvent.cs
- SecurityState.cs
- SoapAttributeAttribute.cs
- VirtualDirectoryMapping.cs
- BuildProvidersCompiler.cs
- TemplateBamlTreeBuilder.cs
- SqlWriter.cs
- ResourceContainer.cs
- MaskInputRejectedEventArgs.cs
- StrokeNodeData.cs
- SessionStateContainer.cs
- MaxValueConverter.cs
- HttpConfigurationContext.cs
- Component.cs
- SQLInt32Storage.cs
- EnvironmentPermission.cs
- FontStretches.cs
- SoapTypeAttribute.cs
- CompiledQuery.cs
- RepeaterDesigner.cs
- DesignerWithHeader.cs
- SecurityCriticalDataForSet.cs
- HttpListenerException.cs
- StaticResourceExtension.cs
- FixedSOMLineCollection.cs
- AutoResetEvent.cs
- _ShellExpression.cs
- SQLConvert.cs
- ReversePositionQuery.cs
- SimpleApplicationHost.cs
- AsyncDataRequest.cs
- XPathNavigatorReader.cs
- TextServicesDisplayAttribute.cs
- ProxyGenerator.cs
- SafeArrayTypeMismatchException.cs
- XPathQilFactory.cs
- ItemTypeToolStripMenuItem.cs
- BindingListCollectionView.cs
- MenuCommand.cs
- TrackingMemoryStream.cs
- NativeMethods.cs
- CompressStream.cs
- InlineCollection.cs
- securitymgrsite.cs
- SchemaElementDecl.cs
- _SslState.cs
- ClassImporter.cs
- UIEndRequest.cs
- ArraySegment.cs
- WorkflowViewElement.cs
- StylusEditingBehavior.cs
- Deflater.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- CapabilitiesUse.cs
- DataServiceQueryOfT.cs
- WebRequest.cs
- ProcessInfo.cs
- XmlEntityReference.cs
- DecimalStorage.cs
- RegistrySecurity.cs
- XmlSchemaComplexContentRestriction.cs
- CustomAttributeBuilder.cs
- ValuePattern.cs
- TabItemWrapperAutomationPeer.cs
- RightsManagementPermission.cs
- SmtpLoginAuthenticationModule.cs
- OperationGenerator.cs
- AbandonedMutexException.cs
- IOThreadScheduler.cs
- CodeConstructor.cs
- PersonalizableTypeEntry.cs
- FunctionQuery.cs
- LocatorGroup.cs
- NameValueCache.cs
- DefaultParameterValueAttribute.cs
- CalendarTable.cs
- HttpCacheVary.cs
- bindurihelper.cs
- MemberAccessException.cs
- SmiGettersStream.cs
- TrustManager.cs
- HtmlValidationSummaryAdapter.cs
- InputReportEventArgs.cs
- DESCryptoServiceProvider.cs
- TriState.cs