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
- SafeCloseHandleCritical.cs
- ListViewTableCell.cs
- CompositeClientFormatter.cs
- AtomServiceDocumentSerializer.cs
- TextSegment.cs
- ToolStrip.cs
- UInt16.cs
- CapiSymmetricAlgorithm.cs
- UIElementParagraph.cs
- TextElementEnumerator.cs
- RequestCacheValidator.cs
- BinHexEncoder.cs
- CombinedGeometry.cs
- HttpRequestWrapper.cs
- CheckBoxPopupAdapter.cs
- ItemsControlAutomationPeer.cs
- ObjectPersistData.cs
- SchemaTypeEmitter.cs
- ScrollBarAutomationPeer.cs
- UseAttributeSetsAction.cs
- ReceiveCompletedEventArgs.cs
- FontWeights.cs
- ListBoxItemAutomationPeer.cs
- FlowNode.cs
- NamespaceEmitter.cs
- RoutedEventHandlerInfo.cs
- TracePayload.cs
- ExclusiveHandleList.cs
- dataSvcMapFileLoader.cs
- ConstantSlot.cs
- FileDetails.cs
- LocatorBase.cs
- _LocalDataStore.cs
- ReverseInheritProperty.cs
- SystemIPGlobalProperties.cs
- StorageModelBuildProvider.cs
- OracleCommandBuilder.cs
- ListBox.cs
- Stream.cs
- InputQueueChannel.cs
- DockProviderWrapper.cs
- ThicknessKeyFrameCollection.cs
- SQLInt16.cs
- EnumBuilder.cs
- CursorConverter.cs
- AutomationAttributeInfo.cs
- OuterGlowBitmapEffect.cs
- DataViewManagerListItemTypeDescriptor.cs
- CollaborationHelperFunctions.cs
- Timer.cs
- SqlFormatter.cs
- PerfService.cs
- AppLevelCompilationSectionCache.cs
- EncryptedXml.cs
- ClientSettingsStore.cs
- NotifyParentPropertyAttribute.cs
- GenerateTemporaryTargetAssembly.cs
- FunctionDetailsReader.cs
- EntityKey.cs
- AddressHeader.cs
- XmlExpressionDumper.cs
- SelectionProcessor.cs
- SID.cs
- FunctionQuery.cs
- CancelEventArgs.cs
- TextServicesDisplayAttributePropertyRanges.cs
- PropertyPushdownHelper.cs
- StylusSystemGestureEventArgs.cs
- DataReceivedEventArgs.cs
- WindowAutomationPeer.cs
- DBBindings.cs
- TemplatedMailWebEventProvider.cs
- LinkedList.cs
- Crc32Helper.cs
- SharedUtils.cs
- DataServiceRequestException.cs
- Native.cs
- TreeNodeMouseHoverEvent.cs
- TemplateControlParser.cs
- XpsViewerException.cs
- LocalIdCollection.cs
- MetadataItemCollectionFactory.cs
- RemotingConfiguration.cs
- OracleCommandBuilder.cs
- PersianCalendar.cs
- ContextMenuService.cs
- _Win32.cs
- InputLangChangeEvent.cs
- RandomNumberGenerator.cs
- AttributeData.cs
- StreamAsIStream.cs
- NavigationFailedEventArgs.cs
- XmlConvert.cs
- TextServicesPropertyRanges.cs
- TextEditorCopyPaste.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- EditorBrowsableAttribute.cs
- TextModifier.cs
- TextParagraphProperties.cs
- RenderingBiasValidation.cs