Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / CommonUI / System / Drawing / Printing / PrintPreviewGraphics.cs / 1 / PrintPreviewGraphics.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Drawing {
using System.Runtime.InteropServices;
using System.ComponentModel;
using System.Diagnostics;
using System;
using Microsoft.Win32;
using System.Security;
using System.Security.Permissions;
using System.Drawing.Internal;
using System.Drawing.Imaging;
using System.Drawing.Text;
using System.Drawing.Drawing2D;
using System.Drawing.Printing;
///
///
/// Retrives the printer graphics during preview.
///
internal class PrintPreviewGraphics {
private PrintPageEventArgs printPageEventArgs;
private PrintDocument printDocument;
public PrintPreviewGraphics(PrintDocument document, PrintPageEventArgs e) {
printPageEventArgs = e;
printDocument = document;
}
///
///
/// Gets the Visible bounds of this graphics object. Used during print preview.
///
public RectangleF VisibleClipBounds {
get {
IntPtr hdevMode = printPageEventArgs.PageSettings.PrinterSettings.GetHdevmodeInternal();
using( DeviceContext dc = printPageEventArgs.PageSettings.PrinterSettings.CreateDeviceContext(hdevMode)) {
using( Graphics graphics = Graphics.FromHdcInternal(dc.Hdc) ) {
if (printDocument.OriginAtMargins) {
// Adjust the origin of the graphics object to be at the user-specified margin location
// Note: Graphics.FromHdc internally calls SaveDC(hdc), we can still use the saved hdc to get the resolution.
int dpiX = UnsafeNativeMethods.GetDeviceCaps(new HandleRef(dc, dc.Hdc), SafeNativeMethods.LOGPIXELSX);
int dpiY = UnsafeNativeMethods.GetDeviceCaps(new HandleRef(dc, dc.Hdc), SafeNativeMethods.LOGPIXELSY);
int hardMarginX_DU = UnsafeNativeMethods.GetDeviceCaps(new HandleRef(dc, dc.Hdc), SafeNativeMethods.PHYSICALOFFSETX);
int hardMarginY_DU = UnsafeNativeMethods.GetDeviceCaps(new HandleRef(dc, dc.Hdc), SafeNativeMethods.PHYSICALOFFSETY);
float hardMarginX = hardMarginX_DU * 100 / dpiX;
float hardMarginY = hardMarginY_DU * 100 / dpiY;
graphics.TranslateTransform(-hardMarginX, -hardMarginY);
graphics.TranslateTransform(printDocument.DefaultPageSettings.Margins.Left, printDocument.DefaultPageSettings.Margins.Top);
}
return graphics.VisibleClipBounds;
}
}
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Drawing {
using System.Runtime.InteropServices;
using System.ComponentModel;
using System.Diagnostics;
using System;
using Microsoft.Win32;
using System.Security;
using System.Security.Permissions;
using System.Drawing.Internal;
using System.Drawing.Imaging;
using System.Drawing.Text;
using System.Drawing.Drawing2D;
using System.Drawing.Printing;
///
///
/// Retrives the printer graphics during preview.
///
internal class PrintPreviewGraphics {
private PrintPageEventArgs printPageEventArgs;
private PrintDocument printDocument;
public PrintPreviewGraphics(PrintDocument document, PrintPageEventArgs e) {
printPageEventArgs = e;
printDocument = document;
}
///
///
/// Gets the Visible bounds of this graphics object. Used during print preview.
///
public RectangleF VisibleClipBounds {
get {
IntPtr hdevMode = printPageEventArgs.PageSettings.PrinterSettings.GetHdevmodeInternal();
using( DeviceContext dc = printPageEventArgs.PageSettings.PrinterSettings.CreateDeviceContext(hdevMode)) {
using( Graphics graphics = Graphics.FromHdcInternal(dc.Hdc) ) {
if (printDocument.OriginAtMargins) {
// Adjust the origin of the graphics object to be at the user-specified margin location
// Note: Graphics.FromHdc internally calls SaveDC(hdc), we can still use the saved hdc to get the resolution.
int dpiX = UnsafeNativeMethods.GetDeviceCaps(new HandleRef(dc, dc.Hdc), SafeNativeMethods.LOGPIXELSX);
int dpiY = UnsafeNativeMethods.GetDeviceCaps(new HandleRef(dc, dc.Hdc), SafeNativeMethods.LOGPIXELSY);
int hardMarginX_DU = UnsafeNativeMethods.GetDeviceCaps(new HandleRef(dc, dc.Hdc), SafeNativeMethods.PHYSICALOFFSETX);
int hardMarginY_DU = UnsafeNativeMethods.GetDeviceCaps(new HandleRef(dc, dc.Hdc), SafeNativeMethods.PHYSICALOFFSETY);
float hardMarginX = hardMarginX_DU * 100 / dpiX;
float hardMarginY = hardMarginY_DU * 100 / dpiY;
graphics.TranslateTransform(-hardMarginX, -hardMarginY);
graphics.TranslateTransform(printDocument.DefaultPageSettings.Margins.Left, printDocument.DefaultPageSettings.Margins.Top);
}
return graphics.VisibleClipBounds;
}
}
}
}
}
}
// 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
- MediaCommands.cs
- HierarchicalDataTemplate.cs
- OneWayChannelFactory.cs
- XmlSchemaAnnotated.cs
- SqlUtil.cs
- DescriptionAttribute.cs
- PersonalizationStateInfoCollection.cs
- BaseCodeDomTreeGenerator.cs
- OperationResponse.cs
- ISAPIRuntime.cs
- sqlinternaltransaction.cs
- ListViewSelectEventArgs.cs
- BrowserTree.cs
- MulticastNotSupportedException.cs
- BitmapEffectGroup.cs
- UIPropertyMetadata.cs
- PropertyToken.cs
- HttpCookieCollection.cs
- CqlLexerHelpers.cs
- InternalBufferOverflowException.cs
- TemplateFactory.cs
- Module.cs
- AttachmentCollection.cs
- TogglePatternIdentifiers.cs
- SecurityIdentifierElement.cs
- CustomPopupPlacement.cs
- Clause.cs
- CellIdBoolean.cs
- GACIdentityPermission.cs
- CalendarDay.cs
- PackageController.cs
- HwndTarget.cs
- TdsParser.cs
- InstanceCreationEditor.cs
- Attributes.cs
- CultureInfoConverter.cs
- SafeHandle.cs
- KnownIds.cs
- MetadataArtifactLoaderFile.cs
- SqlFactory.cs
- PersistenceMetadataNamespace.cs
- Stack.cs
- SqlTransaction.cs
- NameValueConfigurationElement.cs
- Utils.cs
- EventLogHandle.cs
- ScriptingJsonSerializationSection.cs
- CodeTypeMember.cs
- RelationshipSet.cs
- Pens.cs
- NegotiationTokenProvider.cs
- UserControl.cs
- Expression.cs
- ObjectPersistData.cs
- ProfileGroupSettings.cs
- AssemblyCache.cs
- ImageSourceValueSerializer.cs
- ToolZone.cs
- FastEncoderWindow.cs
- Int32RectValueSerializer.cs
- WebAdminConfigurationHelper.cs
- SemanticBasicElement.cs
- DeadCharTextComposition.cs
- HttpModuleCollection.cs
- DocumentXmlWriter.cs
- ResourceContainer.cs
- BasePattern.cs
- TimeSpanParse.cs
- GeneralTransform3DGroup.cs
- CodeVariableReferenceExpression.cs
- PieceNameHelper.cs
- XmlTextReaderImpl.cs
- Axis.cs
- DataSourceView.cs
- FileVersion.cs
- Quad.cs
- TabControlAutomationPeer.cs
- RegistrySecurity.cs
- PatternMatcher.cs
- XmlHierarchicalEnumerable.cs
- SoapException.cs
- BrushMappingModeValidation.cs
- DataGridViewColumnDividerDoubleClickEventArgs.cs
- SiteMapNodeItemEventArgs.cs
- SoapAttributeOverrides.cs
- SmiRecordBuffer.cs
- Int32Rect.cs
- ClientSettingsStore.cs
- WebPartRestoreVerb.cs
- GridViewAutomationPeer.cs
- ImageClickEventArgs.cs
- InternalCache.cs
- DesignerActionMethodItem.cs
- NetworkInterface.cs
- VirtualPathProvider.cs
- SymmetricSecurityProtocol.cs
- EntityProviderFactory.cs
- SqlBooleanMismatchVisitor.cs
- ChangeProcessor.cs
- IdentityValidationException.cs