Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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; ////// /// internal class PrintPreviewGraphics { private PrintPageEventArgs printPageEventArgs; private PrintDocument printDocument; public PrintPreviewGraphics(PrintDocument document, PrintPageEventArgs e) { printPageEventArgs = e; printDocument = document; } ///Retrives the printer graphics during preview. ////// /// 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; ////// /// internal class PrintPreviewGraphics { private PrintPageEventArgs printPageEventArgs; private PrintDocument printDocument; public PrintPreviewGraphics(PrintDocument document, PrintPageEventArgs e) { printPageEventArgs = e; printDocument = document; } ///Retrives the printer graphics during preview. ////// /// 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
- ImageButton.cs
- DefaultAssemblyResolver.cs
- Pair.cs
- XmlSchemaRedefine.cs
- TaskHelper.cs
- GlobalId.cs
- PropertyNames.cs
- AnnouncementDispatcherAsyncResult.cs
- SoapCodeExporter.cs
- ToolStripInSituService.cs
- SQLSingleStorage.cs
- SessionEndedEventArgs.cs
- TextEffect.cs
- XPathPatternBuilder.cs
- PropertyBuilder.cs
- XPathNavigatorKeyComparer.cs
- Calendar.cs
- SqlXml.cs
- ToolboxDataAttribute.cs
- IisTraceListener.cs
- Size3DConverter.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- SchemaMerger.cs
- Figure.cs
- XmlSchemaResource.cs
- RequestCachingSection.cs
- TableDetailsCollection.cs
- ConcurrentBag.cs
- CodeRegionDirective.cs
- CustomSignedXml.cs
- Logging.cs
- TextSpanModifier.cs
- InnerItemCollectionView.cs
- InheritanceContextChangedEventManager.cs
- IntPtr.cs
- StringAnimationBase.cs
- MiniCustomAttributeInfo.cs
- ScriptManagerProxy.cs
- Axis.cs
- _WebProxyDataBuilder.cs
- Trace.cs
- GrammarBuilderDictation.cs
- ServiceHttpHandlerFactory.cs
- FormViewInsertedEventArgs.cs
- PersonalizationProviderCollection.cs
- HttpVersion.cs
- ComPlusAuthorization.cs
- ButtonRenderer.cs
- VisualTreeUtils.cs
- ProviderMetadata.cs
- FilterableAttribute.cs
- XamlLoadErrorInfo.cs
- TCPClient.cs
- AudioFormatConverter.cs
- COM2FontConverter.cs
- ReadWriteObjectLock.cs
- CommandEventArgs.cs
- SystemNetHelpers.cs
- LinearGradientBrush.cs
- Stack.cs
- ColorConvertedBitmapExtension.cs
- RemoteX509Token.cs
- CompositeScriptReferenceEventArgs.cs
- RegexMatchCollection.cs
- GZipUtils.cs
- IdentityManager.cs
- MetabaseSettingsIis7.cs
- XamlPointCollectionSerializer.cs
- CornerRadius.cs
- TypeSystemHelpers.cs
- EntityConnectionStringBuilderItem.cs
- OverlappedAsyncResult.cs
- EdmConstants.cs
- ConfigurationManager.cs
- DBSchemaRow.cs
- XPathBuilder.cs
- ListControlDesigner.cs
- PolygonHotSpot.cs
- ClientRoleProvider.cs
- WeakReferenceKey.cs
- ObjectMemberMapping.cs
- DirtyTextRange.cs
- FileUtil.cs
- HierarchicalDataSourceControl.cs
- CodeTypeReference.cs
- PreProcessInputEventArgs.cs
- StringValidator.cs
- AppendHelper.cs
- XmlTypeMapping.cs
- StrokeCollection.cs
- ParallelQuery.cs
- Root.cs
- DefaultProxySection.cs
- MergeExecutor.cs
- AuthenticateEventArgs.cs
- FixedFlowMap.cs
- MbpInfo.cs
- KnownColorTable.cs
- BaseHashHelper.cs
- WebPartConnectVerb.cs