Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / CommonUI / System / Drawing / Printing / PrintPreviewGraphics.cs / 1305376 / 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; using System.Runtime.Versioning; ////// /// 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 { [ResourceExposure(ResourceScope.None)] [ResourceConsumption(ResourceScope.Process, ResourceScope.Process)] 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; using System.Runtime.Versioning; ////// /// 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 { [ResourceExposure(ResourceScope.None)] [ResourceConsumption(ResourceScope.Process, ResourceScope.Process)] 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
- Win32.cs
- QueryExpression.cs
- XmlNotation.cs
- ApplicationContext.cs
- TextProperties.cs
- LinkedResource.cs
- HealthMonitoringSectionHelper.cs
- InvalidCommandTreeException.cs
- x509store.cs
- Clipboard.cs
- XamlReader.cs
- NCryptSafeHandles.cs
- MenuItemAutomationPeer.cs
- CodeDomSerializer.cs
- ZoneIdentityPermission.cs
- EventProviderWriter.cs
- Message.cs
- Rotation3DKeyFrameCollection.cs
- EntityConnectionStringBuilder.cs
- DeploymentExceptionMapper.cs
- WaitHandle.cs
- Exceptions.cs
- TextServicesPropertyRanges.cs
- OrderedDictionary.cs
- SqlDataSource.cs
- PasswordRecoveryDesigner.cs
- AmbientProperties.cs
- Size3D.cs
- KeyBinding.cs
- FigureParaClient.cs
- MsmqInputChannelListener.cs
- LineGeometry.cs
- BamlTreeUpdater.cs
- LongValidator.cs
- TextOutput.cs
- ControlTemplate.cs
- TemplateDefinition.cs
- ScriptControlDescriptor.cs
- AuthenticatedStream.cs
- X509CertificateStore.cs
- ScrollProviderWrapper.cs
- LingerOption.cs
- LockedActivityGlyph.cs
- TracingConnectionListener.cs
- SchemaNames.cs
- CmsUtils.cs
- ImageAttributes.cs
- TraceListener.cs
- EntityClassGenerator.cs
- XmlConvert.cs
- StorageAssociationTypeMapping.cs
- PipelineComponent.cs
- SvcMapFile.cs
- ContainerAction.cs
- XmlSchemaExporter.cs
- PropertyEntry.cs
- FamilyCollection.cs
- SessionState.cs
- TextBox.cs
- DatatypeImplementation.cs
- ProviderConnectionPointCollection.cs
- UrlAuthFailedErrorFormatter.cs
- Hex.cs
- SmtpAuthenticationManager.cs
- dbenumerator.cs
- DataSet.cs
- RegexMatch.cs
- LocatorManager.cs
- JsonObjectDataContract.cs
- SuppressIldasmAttribute.cs
- XmlSchemaInferenceException.cs
- MenuItemStyleCollection.cs
- CipherData.cs
- Listbox.cs
- NodeFunctions.cs
- WindowsIPAddress.cs
- MenuStrip.cs
- ColorConvertedBitmap.cs
- FixUpCollection.cs
- ToolboxBitmapAttribute.cs
- AppDomain.cs
- RightsManagementEncryptedStream.cs
- ILGen.cs
- ListViewInsertedEventArgs.cs
- TextServicesPropertyRanges.cs
- XMLUtil.cs
- ComponentResourceManager.cs
- WindowsScrollBarBits.cs
- ColorTranslator.cs
- ListViewAutomationPeer.cs
- DataGridColumnCollection.cs
- TimestampInformation.cs
- TableParagraph.cs
- ProxyManager.cs
- Monitor.cs
- StretchValidation.cs
- BuildProviderAppliesToAttribute.cs
- SettingsPropertyIsReadOnlyException.cs
- DropDownButton.cs
- HtmlTextArea.cs