//--------------------------------------------------------------------------------------------------------- /// <summary> /// Создание объекта BitmapSource из стандартного дескриптора изображения /// </summary> /// <param name="h_bitmap">Дескриптор изображения</param> /// <param name="width">Требуемая ширина изображения</param> /// <param name="height">Требуемая высота изображения</param> /// <returns>Объект BitmapSource</returns> //--------------------------------------------------------------------------------------------------------- private static BitmapSource CreateFromHBitmap(IntPtr h_bitmap, Int32 width, Int32 height) { var result = Imaging.CreateBitmapSourceFromHBitmap(h_bitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromWidthAndHeight(width, height)); XNative.DeleteObject(h_bitmap); return(result); }
//--------------------------------------------------------------------------------------------------------- /// <summary> /// Создание объекта BitmapSource из стандартного дескриптора изображения /// </summary> /// <param name="h_bitmap">Дескриптор изображения</param> /// <returns>Объект BitmapSource</returns> //--------------------------------------------------------------------------------------------------------- private static BitmapSource CreateFromHBitmap(IntPtr h_bitmap) { var result = Imaging.CreateBitmapSourceFromHBitmap(h_bitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); XNative.DeleteObject(h_bitmap); return(result); }
//--------------------------------------------------------------------------------------------------------- /// <summary> /// Конвертация объекта <see cref="Bitmap"/> в объект WPF <see cref="System.Windows.Media.Imaging.BitmapSource"/>. /// </summary> /// <remarks> /// Использует GDI для выполнения преобразования /// </remarks> /// <param name="source">Источник изображения</param> /// <returns>Объект BitmapSource</returns> //--------------------------------------------------------------------------------------------------------- public static System.Windows.Media.Imaging.BitmapSource ToBitmapSource(this Bitmap source) { var h_bitmap = source.GetHbitmap(); var result = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(h_bitmap, IntPtr.Zero, System.Windows.Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions()); XNative.DeleteObject(h_bitmap); return(result); }
//--------------------------------------------------------------------------------------------------------- /// <summary> /// Постоянная информация о перетаскивания /// </summary> /// <param name="sender">Источник события</param> /// <param name="args">Аргументы события</param> //--------------------------------------------------------------------------------------------------------- private void OnTreeView_GiveFeedback(Object sender, GiveFeedbackEventArgs args) { Size popup_size = new Size(mPopupHand.ActualWidth, mPopupHand.ActualHeight); Win32Point mouse_pos = new Win32Point(); XNative.GetCursorPos(ref mouse_pos); Point cursopr_pos = new Point(mouse_pos.X, mouse_pos.Y); mPopupHand.PlacementRectangle = new Rect(cursopr_pos, popup_size); }
//--------------------------------------------------------------------------------------------------------- /// <summary> /// Получение параметров представления Direct3D9 /// </summary> /// <returns>Параметры представления Direct3D9</returns> //--------------------------------------------------------------------------------------------------------- public static Direct3D9.PresentParameters GetPresentParameters() { var present_params = new Direct3D9.PresentParameters(); present_params.Windowed = true; present_params.SwapEffect = Direct3D9.SwapEffect.Discard; present_params.DeviceWindowHandle = XNative.GetDesktopWindow(); present_params.PresentationInterval = Direct3D9.PresentInterval.Default; return(present_params); }
//--------------------------------------------------------------------------------------------------------- /// <summary> /// Получение иконки файла связанного с типом файла /// </summary> /// <param name="file_name">Имя файла</param> /// <returns>Изображение</returns> //--------------------------------------------------------------------------------------------------------- public static BitmapSource GetIconFromFileTypeFromShell(String file_name) { IntPtr icon_small = XNative.SHGetFileInfo(file_name, 0, ref XNative.ShellFileInfoDefault, (UInt32)Marshal.SizeOf(XNative.ShellFileInfoDefault), XNative.SHGFI_ICON | XNative.SHGFI_LARGEICON); //The icon is returned in the hIcon member of the shinfo struct System.Drawing.Icon icon = System.Drawing.Icon.FromHandle(XNative.ShellFileInfoDefault.IconHandle); var h_bitmap = icon.ToBitmap().GetHbitmap(); var result = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(h_bitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); XNative.DeleteObject(h_bitmap); return(result); }
//--------------------------------------------------------------------------------------------------------- /// <summary> /// Загрузка изображения из ресурсов сборки /// </summary> /// <param name="resource_manager">Менеджер ресурсов</param> /// <param name="resource_name">Имя ресурса</param> /// <returns>Изображение</returns> //--------------------------------------------------------------------------------------------------------- public static BitmapSource LoadBitmapFromResource(System.Resources.ResourceManager resource_manager, String resource_name) { Object image = resource_manager.GetObject(resource_name); System.Drawing.Bitmap source = (System.Drawing.Bitmap)image; if (source != null) { var h_bitmap = source.GetHbitmap(); var result = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(h_bitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); XNative.DeleteObject(h_bitmap); return(result); } return(null); }