Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- CatalogZone.cs
- HttpWrapper.cs
- CompiledXpathExpr.cs
- ColumnPropertiesGroup.cs
- Double.cs
- Messages.cs
- MsmqChannelFactoryBase.cs
- RenderingBiasValidation.cs
- FormViewModeEventArgs.cs
- SqlClientWrapperSmiStream.cs
- FileEnumerator.cs
- OleDbDataAdapter.cs
- KnownTypesHelper.cs
- VirtualizedCellInfoCollection.cs
- AspNetSynchronizationContext.cs
- ToolTip.cs
- Win32SafeHandles.cs
- XmlDataCollection.cs
- OrderedDictionaryStateHelper.cs
- FixedDocumentSequencePaginator.cs
- User.cs
- FontEditor.cs
- DecoderBestFitFallback.cs
- CodeCompiler.cs
- XmlSerializationWriter.cs
- HScrollProperties.cs
- UDPClient.cs
- ObservableCollection.cs
- URLMembershipCondition.cs
- ItemAutomationPeer.cs
- IndexerNameAttribute.cs
- WebPartConnectVerb.cs
- ColorContextHelper.cs
- LocatorBase.cs
- EventSourceCreationData.cs
- CaseInsensitiveHashCodeProvider.cs
- SystemWebCachingSectionGroup.cs
- storagemappingitemcollection.viewdictionary.cs
- ConfigXmlAttribute.cs
- Rectangle.cs
- NegatedCellConstant.cs
- TypeConverter.cs
- CodeSnippetTypeMember.cs
- HtmlControl.cs
- ThousandthOfEmRealPoints.cs
- ReferentialConstraint.cs
- embossbitmapeffect.cs
- AutomationAttributeInfo.cs
- DrawTreeNodeEventArgs.cs
- DataPagerCommandEventArgs.cs
- TypeGeneratedEventArgs.cs
- EUCJPEncoding.cs
- IdentitySection.cs
- RichTextBox.cs
- XPathDocumentBuilder.cs
- FixedFindEngine.cs
- TextEditorCopyPaste.cs
- OptionalColumn.cs
- KeyBinding.cs
- RepeatInfo.cs
- ArrayWithOffset.cs
- TextRangeEdit.cs
- MembershipPasswordException.cs
- COM2AboutBoxPropertyDescriptor.cs
- TextWriterTraceListener.cs
- ResXBuildProvider.cs
- Mapping.cs
- SignedXml.cs
- DesignerDataView.cs
- CodeMemberEvent.cs
- XpsResourcePolicy.cs
- QuaternionConverter.cs
- _SSPIWrapper.cs
- Size.cs
- Certificate.cs
- StrongNameKeyPair.cs
- ActivityAction.cs
- NamedPipeTransportElement.cs
- Clock.cs
- DefaultValueAttribute.cs
- PackageProperties.cs
- UriSectionData.cs
- HttpModuleAction.cs
- XmlSchemaImporter.cs
- SqlCachedBuffer.cs
- DeploymentExceptionMapper.cs
- EnvironmentPermission.cs
- CfgArc.cs
- StructuralObject.cs
- FrameAutomationPeer.cs
- TextElementEnumerator.cs
- Int32Collection.cs
- RoutedEventValueSerializer.cs
- XamlDesignerSerializationManager.cs
- log.cs
- DataException.cs
- SqlParameterCollection.cs
- ClonableStack.cs
- ObjectViewFactory.cs
- returneventsaver.cs