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
- ScrollBarAutomationPeer.cs
- ResourceSetExpression.cs
- BufferedGraphicsManager.cs
- ToolStripComboBox.cs
- ProxyAttribute.cs
- SoundPlayer.cs
- TableItemPattern.cs
- MergeFilterQuery.cs
- CounterSampleCalculator.cs
- CheckBoxRenderer.cs
- PropertyChangingEventArgs.cs
- DrawingGroupDrawingContext.cs
- ConfigLoader.cs
- RawStylusInputCustomDataList.cs
- MimeMapping.cs
- DataTablePropertyDescriptor.cs
- StringCollection.cs
- DirectoryLocalQuery.cs
- CodeTypeReferenceCollection.cs
- SQLBytesStorage.cs
- WebEncodingValidator.cs
- EditorPartChrome.cs
- SchemaTableColumn.cs
- CachedTypeface.cs
- DecryptedHeader.cs
- MasterPageCodeDomTreeGenerator.cs
- GridViewUpdatedEventArgs.cs
- Ipv6Element.cs
- MetadataFile.cs
- MergeEnumerator.cs
- TagMapCollection.cs
- DateTimeFormatInfoScanner.cs
- KeyedHashAlgorithm.cs
- DataReceivedEventArgs.cs
- XmlUtil.cs
- ProfilePropertySettingsCollection.cs
- PolygonHotSpot.cs
- TypeConverter.cs
- OdbcReferenceCollection.cs
- Freezable.cs
- HandlerMappingMemo.cs
- XmlSchemaGroup.cs
- ArrayConverter.cs
- PerformanceCounterManager.cs
- selecteditemcollection.cs
- AuthorizationSection.cs
- TerminatorSinks.cs
- CodePropertyReferenceExpression.cs
- NavigationService.cs
- ItemsChangedEventArgs.cs
- CodeTypeDeclarationCollection.cs
- DefaultIfEmptyQueryOperator.cs
- SendActivityValidator.cs
- SapiInterop.cs
- GetReadStreamResult.cs
- ChangeInterceptorAttribute.cs
- TracingConnectionInitiator.cs
- DataGridViewCellValidatingEventArgs.cs
- DbParameterCollectionHelper.cs
- FormsAuthenticationEventArgs.cs
- XomlCompiler.cs
- BreadCrumbTextConverter.cs
- PolicyChain.cs
- Int32EqualityComparer.cs
- ToolStripComboBox.cs
- CollectionCodeDomSerializer.cs
- UnitControl.cs
- CapacityStreamGeometryContext.cs
- CustomDictionarySources.cs
- WmlPageAdapter.cs
- RightsController.cs
- PropertyGridEditorPart.cs
- ListViewCancelEventArgs.cs
- DataListGeneralPage.cs
- XmlReaderSettings.cs
- Single.cs
- DelegateSerializationHolder.cs
- ElementsClipboardData.cs
- ToolStripScrollButton.cs
- XamlHostingSectionGroup.cs
- ServiceBuildProvider.cs
- DisplayInformation.cs
- UrlAuthorizationModule.cs
- sqlser.cs
- DictionaryGlobals.cs
- SocketStream.cs
- TypeGeneratedEventArgs.cs
- ComponentResourceKeyConverter.cs
- PartialCachingControl.cs
- CodeLinePragma.cs
- EnumBuilder.cs
- SoapElementAttribute.cs
- HtmlShim.cs
- NoneExcludedImageIndexConverter.cs
- _WebProxyDataBuilder.cs
- SmtpCommands.cs
- SafeHandles.cs
- DataServiceQueryOfT.cs
- ParsedAttributeCollection.cs
- OracleConnection.cs