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; ////// /// 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
- NamedObject.cs
- input.cs
- FirstQueryOperator.cs
- UserThread.cs
- RequestResizeEvent.cs
- StorageComplexTypeMapping.cs
- Point4D.cs
- HttpResponseInternalWrapper.cs
- EDesignUtil.cs
- ConnectionConsumerAttribute.cs
- Bind.cs
- DiffuseMaterial.cs
- SendDesigner.xaml.cs
- ProfileGroupSettingsCollection.cs
- RecordsAffectedEventArgs.cs
- PersonalizationDictionary.cs
- WebConvert.cs
- Random.cs
- GradientStop.cs
- ToggleButtonAutomationPeer.cs
- CommandField.cs
- ComponentDispatcher.cs
- httpapplicationstate.cs
- LOSFormatter.cs
- ThemeableAttribute.cs
- TargetConverter.cs
- MergeLocalizationDirectives.cs
- BStrWrapper.cs
- HttpApplicationFactory.cs
- GridEntry.cs
- MissingFieldException.cs
- TransactionState.cs
- NullRuntimeConfig.cs
- TrackingMemoryStream.cs
- Boolean.cs
- GraphicsContainer.cs
- ButtonPopupAdapter.cs
- AsyncResult.cs
- GC.cs
- WindowsFormsHostPropertyMap.cs
- UICuesEvent.cs
- Point3DCollection.cs
- PngBitmapDecoder.cs
- DesignBindingValueUIHandler.cs
- ReadOnlyHierarchicalDataSourceView.cs
- CanExecuteRoutedEventArgs.cs
- HierarchicalDataBoundControlAdapter.cs
- HttpModulesSection.cs
- DisableDpiAwarenessAttribute.cs
- SiteMapNodeCollection.cs
- PersonalizationEntry.cs
- XmlSchemaAttributeGroupRef.cs
- IndexerNameAttribute.cs
- DecoratedNameAttribute.cs
- TimeoutHelper.cs
- WebPartCatalogCloseVerb.cs
- X509ChainElement.cs
- TypeConverterHelper.cs
- ValueChangedEventManager.cs
- ResourceDescriptionAttribute.cs
- IteratorFilter.cs
- ToolStripItemRenderEventArgs.cs
- PropertyConverter.cs
- DataGridColumnCollectionEditor.cs
- CryptoKeySecurity.cs
- DataGrid.cs
- printdlgexmarshaler.cs
- DBCSCodePageEncoding.cs
- FixedPageAutomationPeer.cs
- AppDomain.cs
- EmptyControlCollection.cs
- DataSourceDescriptorCollection.cs
- SessionEndedEventArgs.cs
- ToolStripSeparator.cs
- WinOEToolBoxItem.cs
- CngProperty.cs
- NativeMethods.cs
- NonceCache.cs
- XmlSchemaSequence.cs
- EdmToObjectNamespaceMap.cs
- ToolBar.cs
- ViewSimplifier.cs
- CultureInfo.cs
- OracleRowUpdatedEventArgs.cs
- ListViewTableRow.cs
- InstalledFontCollection.cs
- X509Certificate.cs
- WindowsUpDown.cs
- RegexCapture.cs
- JapaneseLunisolarCalendar.cs
- HttpContextServiceHost.cs
- ContentDisposition.cs
- RequestChannelBinder.cs
- CodeIdentifier.cs
- UInt32Converter.cs
- Content.cs
- BorderGapMaskConverter.cs
- SignerInfo.cs
- TableLayoutSettingsTypeConverter.cs
- ReturnType.cs