Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / WinFormsIntegration / System / Windows / Integration / Convert.cs / 1 / Convert.cs
using MS.Win32; using System; using System.Collections.Generic; using System.Diagnostics; using SD = System.Drawing; using SDI = System.Drawing.Imaging; using SWF = System.Windows.Forms; using SW = System.Windows; using SWI = System.Windows.Input; using SWM = System.Windows.Media; using SWMI = System.Windows.Media.Imaging; namespace System.Windows.Forms.Integration { ////// Converters from System.Drawing types and WPF types /// internal static class Convert { internal const float systemDrawingPixelsPerInch = 72.0f; internal const float systemWindowsPixelsPerInch = 96.0f; private static Dictionary_toSystemWindowsInputCursorDictionary; private static Dictionary ToSystemWindowsInputCursorDictionary { get { if (_toSystemWindowsInputCursorDictionary == null) { _toSystemWindowsInputCursorDictionary = new Dictionary (); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.AppStarting, SWI.Cursors.AppStarting); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.Arrow, SWI.Cursors.Arrow); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.Cross, SWI.Cursors.Cross); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.Hand, SWI.Cursors.Hand); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.Help, SWI.Cursors.Help); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.HSplit, SWI.Cursors.Arrow); //No equivalent _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.IBeam, SWI.Cursors.IBeam); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.No, SWI.Cursors.No); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.NoMove2D, SWI.Cursors.ScrollAll); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.NoMoveHoriz, SWI.Cursors.ScrollWE); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.NoMoveVert, SWI.Cursors.ScrollNS); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.PanEast, SWI.Cursors.ScrollE); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.PanNorth, SWI.Cursors.ScrollN); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.PanNE, SWI.Cursors.ScrollNE); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.PanNW, SWI.Cursors.ScrollNW); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.PanSouth, SWI.Cursors.ScrollS); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.PanSE, SWI.Cursors.ScrollSE); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.PanSW, SWI.Cursors.ScrollSW); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.PanWest, SWI.Cursors.ScrollW); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.SizeAll, SWI.Cursors.SizeAll); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.SizeNESW, SWI.Cursors.SizeNESW); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.SizeNS, SWI.Cursors.SizeNS); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.SizeNWSE, SWI.Cursors.SizeNWSE); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.SizeWE, SWI.Cursors.SizeWE); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.UpArrow, SWI.Cursors.UpArrow); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.VSplit, SWI.Cursors.Arrow); //No equivalent _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.WaitCursor, SWI.Cursors.Wait); } return _toSystemWindowsInputCursorDictionary; } } private static Dictionary _toSystemWindowsFormsCursorDictionary; private static Dictionary ToSystemWindowsFormsCursorDictionary { get { if (_toSystemWindowsFormsCursorDictionary == null) { _toSystemWindowsFormsCursorDictionary = new Dictionary (); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.AppStarting, SWF.Cursors.AppStarting); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.Arrow, SWF.Cursors.Arrow); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.Cross, SWF.Cursors.Cross); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.Hand, SWF.Cursors.Hand); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.Help, SWF.Cursors.Help); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.IBeam, SWF.Cursors.IBeam); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.No, SWF.Cursors.No); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.None, SWF.Cursors.Default); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.ScrollAll, SWF.Cursors.NoMove2D); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.ScrollWE, SWF.Cursors.NoMoveHoriz); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.ScrollNS, SWF.Cursors.NoMoveVert); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.ScrollE, SWF.Cursors.PanEast); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.ScrollN, SWF.Cursors.PanNorth); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.ScrollNE, SWF.Cursors.PanNE); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.ScrollNW, SWF.Cursors.PanNW); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.ScrollS, SWF.Cursors.PanSouth); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.ScrollSE, SWF.Cursors.PanSE); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.ScrollSW, SWF.Cursors.PanSW); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.ScrollW, SWF.Cursors.PanWest); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.SizeAll, SWF.Cursors.SizeAll); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.SizeNESW, SWF.Cursors.SizeNESW); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.SizeNS, SWF.Cursors.SizeNS); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.SizeNWSE, SWF.Cursors.SizeNWSE); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.SizeWE, SWF.Cursors.SizeWE); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.UpArrow, SWF.Cursors.UpArrow); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.Wait, SWF.Cursors.WaitCursor); } return _toSystemWindowsFormsCursorDictionary; } } /// /// Converts between a System.Windows.Forms.Cursor and a System.Windows.Input.Cursor /// internal static SWI.Cursor ToSystemWindowsInputCursor(SWF.Cursor swfCursor) { SWI.Cursor swiCursor; if (ToSystemWindowsInputCursorDictionary.TryGetValue(swfCursor, out swiCursor)) { return swiCursor; } return SWI.Cursors.Arrow; } ////// Converts between a System.Windows.Input.Cursor and a System.Windows.Forms.Cursor /// internal static SWF.Cursor ToSystemWindowsFormsCursor(SWI.Cursor swiCursor) { SWF.Cursor swfCursor; if (swiCursor != null && ToSystemWindowsFormsCursorDictionary.TryGetValue(swiCursor, out swfCursor)) { return swfCursor; } return SWF.Cursors.Default; } ////// Converts between a System.Drawing.Image and System.Windows.Media.Imaging.BitmapImage /// internal static SWMI.BitmapImage ToSystemWindowsMediaImagingBitmapImage(SD.Image fromImage) { if (fromImage == null) { return null; } SWMI.BitmapImage newImage = null; System.IO.MemoryStream stream = new System.IO.MemoryStream(); //Use the same output format that the Image is in, unless it is a MemoryBmp, //in which case use a regular Bmp. SDI.ImageFormat IntermediateFormat = fromImage.RawFormat; if (IntermediateFormat.Guid.CompareTo(SDI.ImageFormat.MemoryBmp.Guid) == 0) { IntermediateFormat = SDI.ImageFormat.Bmp; } fromImage.Save(stream, IntermediateFormat); stream.Seek(0, System.IO.SeekOrigin.Begin); newImage = new SWMI.BitmapImage(); newImage.BeginInit(); newImage.StreamSource = stream; newImage.EndInit(); return newImage; } ////// Converts from a System.Windows.Forms.Message to a System.Windows.Interop.MSG /// /// ///internal static System.Windows.Interop.MSG ToSystemWindowsInteropMSG(SWF.Message msg) { SW.Interop.MSG msg2 = new SW.Interop.MSG(); msg2.hwnd = msg.HWnd; msg2.lParam = msg.LParam; msg2.message = msg.Msg; msg2.pt_x = 0; msg2.pt_y = 0; msg2.time = MS.Win32.SafeNativeMethods.GetMessageTime(); msg2.wParam = msg.WParam; return msg2; } /// /// Converts from a System.Windows.Forms.Keys to a System.Windows.Input.ModifierKeys /// /// ///internal static SWI.ModifierKeys ToSystemWindowsInputModifierKeys(SWF.Keys keyData) { SWI.ModifierKeys modifiers = new System.Windows.Input.ModifierKeys(); if ((keyData & SWF.Keys.Alt) == SWF.Keys.Alt) modifiers |= SWI.ModifierKeys.Alt; if ((keyData & SWF.Keys.Control) == SWF.Keys.Control) modifiers |= SWI.ModifierKeys.Control; if ((keyData & SWF.Keys.Shift) == SWF.Keys.Shift) modifiers |= SWI.ModifierKeys.Shift; if (((keyData & SWF.Keys.LWin) == SWF.Keys.LWin) || ((keyData & SWF.Keys.RWin) == SWF.Keys.RWin)) { modifiers |= SWI.ModifierKeys.Windows; } return modifiers; } internal static double SystemDrawingFontToSystemWindowsFontSize(SD.Font font) { return font.SizeInPoints * Convert.systemWindowsPixelsPerInch / Convert.systemDrawingPixelsPerInch; } internal static double FontSizeToSystemDrawing(double initialSize) { return initialSize * Convert.systemDrawingPixelsPerInch / Convert.systemWindowsPixelsPerInch; } internal static SWM.FontFamily ToSystemWindowsFontFamily(SD.FontFamily sdFamily) { //NOTE: if this throws an exception, it will get picked up by the PropertyMappingError event. return new SWM.FontFamily(sdFamily.Name); } internal static FontWeight ToSystemWindowsFontWeight(SD.Font sdFont) { return sdFont.Bold ? FontWeights.Bold : FontWeights.Normal; } internal static FontStyle ToSystemWindowsFontStyle(SD.Font sdFont) { return sdFont.Italic ? FontStyles.Italic : FontStyles.Normal; } internal static Size ToSystemWindowsSize(SD.Size size, Vector scale) { Size returnSize = new Size((double)size.Width, (double)size.Height); // Adjust for WFH scaling returnSize.Width /= ScaleFactor(scale.X, Orientation.Horizontal); returnSize.Height /= ScaleFactor(scale.Y, Orientation.Vertical); return returnSize; } internal static SD.Size ToSystemDrawingSize(Size size, Vector scale) { size.Width *= ScaleFactor(scale.X, Orientation.Horizontal); size.Height *= ScaleFactor(scale.Y, Orientation.Vertical); return new SD.Size(Convert.ToBoundedInt(size.Width), Convert.ToBoundedInt(size.Height)); } private static double ScaleFactor(double value, Orientation orientation) { //This is a guard against possible unset scale value (which shouldn't happen) if (HostUtils.IsZero(value)) { value = 1.0; } return value * HostUtils.PixelsPerInch(orientation) / systemWindowsPixelsPerInch; } internal static SD.Size ConstraintToSystemDrawingSize(Size size, Vector scale) { // Convert WPF constraint to a System.Drawing.Size. For SD.Size, 0 represents unconstrained, // while for SW.Size, this is represented by double.PositiveInfinity if (size.Width == double.PositiveInfinity) { size.Width = 0; } if (size.Height == double.PositiveInfinity) { size.Height = 0; } return ToSystemDrawingSize(size, scale); } internal static Padding ToSystemWindowsFormsPadding(Thickness thickness) { return new Padding(ToBoundedInt(thickness.Left), ToBoundedInt(thickness.Top), ToBoundedInt(thickness.Right), ToBoundedInt(thickness.Bottom)); } internal static int ToBoundedInt(double value) { if (value > int.MaxValue) { return int.MaxValue; } if (value < int.MinValue) { return int.MinValue; } return (int)value; } /// /// Converts between a System.Windows.Color and a System.Drawing.Color /// internal static SD.Color ToSystemDrawingColor(SWM.Color color) { return SD.Color.FromArgb(color.A, color.R, color.G, color.B); } ////// Converts from a System.Windows.Interop.MSG to a System.Windows.Forms.Message /// /// ///internal static SWF.Message ToSystemWindowsFormsMessage(System.Windows.Interop.MSG msg) { SWF.Message msg2 = new SWF.Message(); msg2.HWnd = msg.hwnd; msg2.LParam = msg.lParam; msg2.Msg = msg.message; msg2.WParam = msg.wParam; return msg2; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using MS.Win32; using System; using System.Collections.Generic; using System.Diagnostics; using SD = System.Drawing; using SDI = System.Drawing.Imaging; using SWF = System.Windows.Forms; using SW = System.Windows; using SWI = System.Windows.Input; using SWM = System.Windows.Media; using SWMI = System.Windows.Media.Imaging; namespace System.Windows.Forms.Integration { /// /// Converters from System.Drawing types and WPF types /// internal static class Convert { internal const float systemDrawingPixelsPerInch = 72.0f; internal const float systemWindowsPixelsPerInch = 96.0f; private static Dictionary_toSystemWindowsInputCursorDictionary; private static Dictionary ToSystemWindowsInputCursorDictionary { get { if (_toSystemWindowsInputCursorDictionary == null) { _toSystemWindowsInputCursorDictionary = new Dictionary (); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.AppStarting, SWI.Cursors.AppStarting); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.Arrow, SWI.Cursors.Arrow); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.Cross, SWI.Cursors.Cross); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.Hand, SWI.Cursors.Hand); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.Help, SWI.Cursors.Help); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.HSplit, SWI.Cursors.Arrow); //No equivalent _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.IBeam, SWI.Cursors.IBeam); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.No, SWI.Cursors.No); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.NoMove2D, SWI.Cursors.ScrollAll); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.NoMoveHoriz, SWI.Cursors.ScrollWE); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.NoMoveVert, SWI.Cursors.ScrollNS); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.PanEast, SWI.Cursors.ScrollE); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.PanNorth, SWI.Cursors.ScrollN); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.PanNE, SWI.Cursors.ScrollNE); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.PanNW, SWI.Cursors.ScrollNW); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.PanSouth, SWI.Cursors.ScrollS); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.PanSE, SWI.Cursors.ScrollSE); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.PanSW, SWI.Cursors.ScrollSW); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.PanWest, SWI.Cursors.ScrollW); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.SizeAll, SWI.Cursors.SizeAll); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.SizeNESW, SWI.Cursors.SizeNESW); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.SizeNS, SWI.Cursors.SizeNS); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.SizeNWSE, SWI.Cursors.SizeNWSE); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.SizeWE, SWI.Cursors.SizeWE); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.UpArrow, SWI.Cursors.UpArrow); _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.VSplit, SWI.Cursors.Arrow); //No equivalent _toSystemWindowsInputCursorDictionary.Add(SWF.Cursors.WaitCursor, SWI.Cursors.Wait); } return _toSystemWindowsInputCursorDictionary; } } private static Dictionary _toSystemWindowsFormsCursorDictionary; private static Dictionary ToSystemWindowsFormsCursorDictionary { get { if (_toSystemWindowsFormsCursorDictionary == null) { _toSystemWindowsFormsCursorDictionary = new Dictionary (); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.AppStarting, SWF.Cursors.AppStarting); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.Arrow, SWF.Cursors.Arrow); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.Cross, SWF.Cursors.Cross); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.Hand, SWF.Cursors.Hand); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.Help, SWF.Cursors.Help); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.IBeam, SWF.Cursors.IBeam); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.No, SWF.Cursors.No); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.None, SWF.Cursors.Default); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.ScrollAll, SWF.Cursors.NoMove2D); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.ScrollWE, SWF.Cursors.NoMoveHoriz); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.ScrollNS, SWF.Cursors.NoMoveVert); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.ScrollE, SWF.Cursors.PanEast); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.ScrollN, SWF.Cursors.PanNorth); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.ScrollNE, SWF.Cursors.PanNE); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.ScrollNW, SWF.Cursors.PanNW); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.ScrollS, SWF.Cursors.PanSouth); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.ScrollSE, SWF.Cursors.PanSE); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.ScrollSW, SWF.Cursors.PanSW); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.ScrollW, SWF.Cursors.PanWest); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.SizeAll, SWF.Cursors.SizeAll); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.SizeNESW, SWF.Cursors.SizeNESW); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.SizeNS, SWF.Cursors.SizeNS); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.SizeNWSE, SWF.Cursors.SizeNWSE); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.SizeWE, SWF.Cursors.SizeWE); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.UpArrow, SWF.Cursors.UpArrow); _toSystemWindowsFormsCursorDictionary.Add(SWI.Cursors.Wait, SWF.Cursors.WaitCursor); } return _toSystemWindowsFormsCursorDictionary; } } /// /// Converts between a System.Windows.Forms.Cursor and a System.Windows.Input.Cursor /// internal static SWI.Cursor ToSystemWindowsInputCursor(SWF.Cursor swfCursor) { SWI.Cursor swiCursor; if (ToSystemWindowsInputCursorDictionary.TryGetValue(swfCursor, out swiCursor)) { return swiCursor; } return SWI.Cursors.Arrow; } ////// Converts between a System.Windows.Input.Cursor and a System.Windows.Forms.Cursor /// internal static SWF.Cursor ToSystemWindowsFormsCursor(SWI.Cursor swiCursor) { SWF.Cursor swfCursor; if (swiCursor != null && ToSystemWindowsFormsCursorDictionary.TryGetValue(swiCursor, out swfCursor)) { return swfCursor; } return SWF.Cursors.Default; } ////// Converts between a System.Drawing.Image and System.Windows.Media.Imaging.BitmapImage /// internal static SWMI.BitmapImage ToSystemWindowsMediaImagingBitmapImage(SD.Image fromImage) { if (fromImage == null) { return null; } SWMI.BitmapImage newImage = null; System.IO.MemoryStream stream = new System.IO.MemoryStream(); //Use the same output format that the Image is in, unless it is a MemoryBmp, //in which case use a regular Bmp. SDI.ImageFormat IntermediateFormat = fromImage.RawFormat; if (IntermediateFormat.Guid.CompareTo(SDI.ImageFormat.MemoryBmp.Guid) == 0) { IntermediateFormat = SDI.ImageFormat.Bmp; } fromImage.Save(stream, IntermediateFormat); stream.Seek(0, System.IO.SeekOrigin.Begin); newImage = new SWMI.BitmapImage(); newImage.BeginInit(); newImage.StreamSource = stream; newImage.EndInit(); return newImage; } ////// Converts from a System.Windows.Forms.Message to a System.Windows.Interop.MSG /// /// ///internal static System.Windows.Interop.MSG ToSystemWindowsInteropMSG(SWF.Message msg) { SW.Interop.MSG msg2 = new SW.Interop.MSG(); msg2.hwnd = msg.HWnd; msg2.lParam = msg.LParam; msg2.message = msg.Msg; msg2.pt_x = 0; msg2.pt_y = 0; msg2.time = MS.Win32.SafeNativeMethods.GetMessageTime(); msg2.wParam = msg.WParam; return msg2; } /// /// Converts from a System.Windows.Forms.Keys to a System.Windows.Input.ModifierKeys /// /// ///internal static SWI.ModifierKeys ToSystemWindowsInputModifierKeys(SWF.Keys keyData) { SWI.ModifierKeys modifiers = new System.Windows.Input.ModifierKeys(); if ((keyData & SWF.Keys.Alt) == SWF.Keys.Alt) modifiers |= SWI.ModifierKeys.Alt; if ((keyData & SWF.Keys.Control) == SWF.Keys.Control) modifiers |= SWI.ModifierKeys.Control; if ((keyData & SWF.Keys.Shift) == SWF.Keys.Shift) modifiers |= SWI.ModifierKeys.Shift; if (((keyData & SWF.Keys.LWin) == SWF.Keys.LWin) || ((keyData & SWF.Keys.RWin) == SWF.Keys.RWin)) { modifiers |= SWI.ModifierKeys.Windows; } return modifiers; } internal static double SystemDrawingFontToSystemWindowsFontSize(SD.Font font) { return font.SizeInPoints * Convert.systemWindowsPixelsPerInch / Convert.systemDrawingPixelsPerInch; } internal static double FontSizeToSystemDrawing(double initialSize) { return initialSize * Convert.systemDrawingPixelsPerInch / Convert.systemWindowsPixelsPerInch; } internal static SWM.FontFamily ToSystemWindowsFontFamily(SD.FontFamily sdFamily) { //NOTE: if this throws an exception, it will get picked up by the PropertyMappingError event. return new SWM.FontFamily(sdFamily.Name); } internal static FontWeight ToSystemWindowsFontWeight(SD.Font sdFont) { return sdFont.Bold ? FontWeights.Bold : FontWeights.Normal; } internal static FontStyle ToSystemWindowsFontStyle(SD.Font sdFont) { return sdFont.Italic ? FontStyles.Italic : FontStyles.Normal; } internal static Size ToSystemWindowsSize(SD.Size size, Vector scale) { Size returnSize = new Size((double)size.Width, (double)size.Height); // Adjust for WFH scaling returnSize.Width /= ScaleFactor(scale.X, Orientation.Horizontal); returnSize.Height /= ScaleFactor(scale.Y, Orientation.Vertical); return returnSize; } internal static SD.Size ToSystemDrawingSize(Size size, Vector scale) { size.Width *= ScaleFactor(scale.X, Orientation.Horizontal); size.Height *= ScaleFactor(scale.Y, Orientation.Vertical); return new SD.Size(Convert.ToBoundedInt(size.Width), Convert.ToBoundedInt(size.Height)); } private static double ScaleFactor(double value, Orientation orientation) { //This is a guard against possible unset scale value (which shouldn't happen) if (HostUtils.IsZero(value)) { value = 1.0; } return value * HostUtils.PixelsPerInch(orientation) / systemWindowsPixelsPerInch; } internal static SD.Size ConstraintToSystemDrawingSize(Size size, Vector scale) { // Convert WPF constraint to a System.Drawing.Size. For SD.Size, 0 represents unconstrained, // while for SW.Size, this is represented by double.PositiveInfinity if (size.Width == double.PositiveInfinity) { size.Width = 0; } if (size.Height == double.PositiveInfinity) { size.Height = 0; } return ToSystemDrawingSize(size, scale); } internal static Padding ToSystemWindowsFormsPadding(Thickness thickness) { return new Padding(ToBoundedInt(thickness.Left), ToBoundedInt(thickness.Top), ToBoundedInt(thickness.Right), ToBoundedInt(thickness.Bottom)); } internal static int ToBoundedInt(double value) { if (value > int.MaxValue) { return int.MaxValue; } if (value < int.MinValue) { return int.MinValue; } return (int)value; } /// /// Converts between a System.Windows.Color and a System.Drawing.Color /// internal static SD.Color ToSystemDrawingColor(SWM.Color color) { return SD.Color.FromArgb(color.A, color.R, color.G, color.B); } ////// Converts from a System.Windows.Interop.MSG to a System.Windows.Forms.Message /// /// ///internal static SWF.Message ToSystemWindowsFormsMessage(System.Windows.Interop.MSG msg) { SWF.Message msg2 = new SWF.Message(); msg2.HWnd = msg.hwnd; msg2.LParam = msg.lParam; msg2.Msg = msg.message; msg2.WParam = msg.wParam; return msg2; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- OrderedDictionary.cs
- LogEntryDeserializer.cs
- ParserHooks.cs
- StackSpiller.cs
- Missing.cs
- BamlWriter.cs
- PersonalizationStateInfo.cs
- TransformerConfigurationWizardBase.cs
- HexParser.cs
- XmlLangPropertyAttribute.cs
- SQlBooleanStorage.cs
- StreamInfo.cs
- ADMembershipUser.cs
- FrameworkElement.cs
- WebBrowserNavigatedEventHandler.cs
- DBPropSet.cs
- InputMethod.cs
- DataGridViewCellStateChangedEventArgs.cs
- FixedSchema.cs
- Function.cs
- TreeNodeBindingCollection.cs
- ResXDataNode.cs
- WorkerRequest.cs
- KernelTypeValidation.cs
- ViewgenContext.cs
- XamlGridLengthSerializer.cs
- DataGridViewRowsAddedEventArgs.cs
- ConstraintConverter.cs
- BaseHashHelper.cs
- BitmapEffectInput.cs
- EditorZone.cs
- VirtualDirectoryMappingCollection.cs
- BuildManagerHost.cs
- _FtpDataStream.cs
- MsmqChannelListenerBase.cs
- SHA512Managed.cs
- StrongBox.cs
- WrapPanel.cs
- KeyedHashAlgorithm.cs
- WebServiceHost.cs
- FormViewCommandEventArgs.cs
- XPathNavigatorKeyComparer.cs
- BaseServiceProvider.cs
- LightweightCodeGenerator.cs
- UIAgentMonitor.cs
- BaseTransportHeaders.cs
- ScriptManager.cs
- TextRange.cs
- TemplateContentLoader.cs
- RequestNavigateEventArgs.cs
- ExclusiveTcpTransportManager.cs
- WebFaultClientMessageInspector.cs
- EUCJPEncoding.cs
- HtmlElementErrorEventArgs.cs
- TextBounds.cs
- ContentValidator.cs
- CommandID.cs
- RowToParametersTransformer.cs
- ResourceManagerWrapper.cs
- Comparer.cs
- UserMapPath.cs
- ObjectListFieldsPage.cs
- PathParser.cs
- IsolatedStorageFile.cs
- UserPreferenceChangingEventArgs.cs
- LockedBorderGlyph.cs
- UpdateCommand.cs
- EntityContainerAssociationSetEnd.cs
- QuaternionRotation3D.cs
- Exception.cs
- SqlNamer.cs
- WebResourceAttribute.cs
- XmlDataSourceNodeDescriptor.cs
- Separator.cs
- DataGridViewCellValidatingEventArgs.cs
- SoapExtensionImporter.cs
- PolygonHotSpot.cs
- TypeConverter.cs
- Slider.cs
- ReflectionTypeLoadException.cs
- Resources.Designer.cs
- WebPartUtil.cs
- DefaultHttpHandler.cs
- LineGeometry.cs
- ZipArchive.cs
- FormViewInsertEventArgs.cs
- CookieProtection.cs
- EventKeyword.cs
- ImageDrawing.cs
- InitializerFacet.cs
- XmlNodeChangedEventManager.cs
- ObjectView.cs
- XPathParser.cs
- Int32Rect.cs
- PointKeyFrameCollection.cs
- EventHandlingScope.cs
- KeyboardNavigation.cs
- WsatAdminException.cs
- RayMeshGeometry3DHitTestResult.cs
- SecurityTokenAuthenticator.cs