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
- BitmapCacheBrush.cs
- FolderBrowserDialogDesigner.cs
- ArrayList.cs
- DecimalStorage.cs
- MenuAutomationPeer.cs
- StringExpressionSet.cs
- CodeExpressionStatement.cs
- PageOrientation.cs
- BitmapFrameDecode.cs
- DelegateOutArgument.cs
- QilStrConcat.cs
- ObjectHelper.cs
- Attributes.cs
- SyndicationItemFormatter.cs
- ImpersonateTokenRef.cs
- ClientConfigurationHost.cs
- Propagator.cs
- MappingSource.cs
- XmlSerializerSection.cs
- RenderDataDrawingContext.cs
- Policy.cs
- FixUpCollection.cs
- HTTPNotFoundHandler.cs
- RotationValidation.cs
- DecimalKeyFrameCollection.cs
- XmlKeywords.cs
- ManagementEventArgs.cs
- Activity.cs
- PartitionedStream.cs
- HiddenFieldPageStatePersister.cs
- JapaneseCalendar.cs
- IsolationInterop.cs
- Bezier.cs
- SimpleTypesSurrogate.cs
- ProfileModule.cs
- StateRuntime.cs
- MutexSecurity.cs
- EntityStoreSchemaGenerator.cs
- TextTreePropertyUndoUnit.cs
- DataContractSerializer.cs
- HttpProfileGroupBase.cs
- HtmlWindow.cs
- Group.cs
- TransportConfigurationTypeElement.cs
- PropertySet.cs
- DrawingGroupDrawingContext.cs
- TextSimpleMarkerProperties.cs
- XmlDataDocument.cs
- DataGridColumnCollection.cs
- LayoutEditorPart.cs
- SyndicationLink.cs
- CellParaClient.cs
- GlyphsSerializer.cs
- PropertyPath.cs
- WindowsRichEditRange.cs
- IntSecurity.cs
- Helpers.cs
- BitmapScalingModeValidation.cs
- ColorConverter.cs
- AsyncCodeActivity.cs
- EventProviderWriter.cs
- TextServicesCompartmentContext.cs
- MenuDesigner.cs
- XmlBaseWriter.cs
- Visual3D.cs
- IChannel.cs
- RoleGroup.cs
- FontStretches.cs
- FrameAutomationPeer.cs
- DocumentNUp.cs
- WpfXamlType.cs
- ComEventsHelper.cs
- CounterNameConverter.cs
- RenderingEventArgs.cs
- GZipDecoder.cs
- DbReferenceCollection.cs
- List.cs
- COM2ComponentEditor.cs
- PublisherIdentityPermission.cs
- ProfileModule.cs
- PropertyValidationContext.cs
- StagingAreaInputItem.cs
- ExecutionContext.cs
- HTTPNotFoundHandler.cs
- ADMembershipUser.cs
- Typeface.cs
- XmlSchemaInferenceException.cs
- COM2IPerPropertyBrowsingHandler.cs
- SecurityRequiresReviewAttribute.cs
- ConnectionStringSettings.cs
- CompiledQuery.cs
- NotImplementedException.cs
- StringUtil.cs
- Int16KeyFrameCollection.cs
- BitmapEffectRenderDataResource.cs
- StateItem.cs
- FixedPageProcessor.cs
- StreamReader.cs
- brushes.cs
- ComboBoxItem.cs