private IntPtr RenderWindowsMetafilePict(TYMED tymed) { ComDebug.ReportInfo("GraphDocumentDataObject.RenderWindowsMetafilePict"); if (!(tymed == TYMED.TYMED_MFPICT)) { throw new ArgumentException(nameof(tymed) + " is not TYMED_MFPICT"); } if (null != _graphDocumentBitmapImage) { using (var rgbBitmap = GraphDocumentExportActions.ConvertBitmapToPixelFormat(_graphDocumentBitmapImage, System.Drawing.Imaging.PixelFormat.Format24bppRgb, _graphExportOptions.BackgroundColorForFormatsWithoutAlphaChannel)) { var scaledDocSize = _graphDocumentSize * _graphExportOptions.OutputScalingFactor; using (var enhancedMetafile = GraphDocumentExportActions.RenderAsEnhancedMetafileBitmapFormat(rgbBitmap, scaledDocSize)) { var hEmf = enhancedMetafile.GetHenhmetafile(); return(DataObjectHelper.ConvertEnhancedMetafileToWindowsMetafilePict(hEmf, scaledDocSize.X, scaledDocSize.Y)); } } } else { throw new InvalidProgramException("Please report this exception to the author of the program and describe the steps to reproduce the exception"); } }
private void EnsureDropFileCreated() { var fileExtension = GraphExportOptions.GetDefaultFileNameExtension(_graphExportOptions.DropFileImageFormat); _graphDocumentDropdownFileName = System.IO.Path.Combine(System.IO.Path.GetTempPath(), "AltaxoClipboardImage" + fileExtension); if (System.IO.File.Exists(_graphDocumentDropdownFileName)) { try { System.IO.File.Delete(_graphDocumentDropdownFileName); } catch (Exception) { _graphDocumentDropdownFileName = null; return; } } if (_graphExportOptions.DropFileImageFormat == System.Drawing.Imaging.ImageFormat.Emf) { if (!(null != _graphDocumentMetafileImage)) { throw new InvalidOperationException(nameof(_graphDocumentMetafileImage) + " should be != null"); } var clonedMF = (System.Drawing.Imaging.Metafile)_graphDocumentMetafileImage.Clone(); // have to clone metafile because after calling GetHenhmetafile() metafile would be destroyed DataObjectHelper.SaveMetafileToDisk(clonedMF.GetHenhmetafile(), _graphDocumentDropdownFileName); } else if (_graphExportOptions.DropFileImageFormat == System.Drawing.Imaging.ImageFormat.Wmf) { using (var rgbBitmap = GraphDocumentExportActions.ConvertBitmapToPixelFormat(_graphDocumentBitmapImage, System.Drawing.Imaging.PixelFormat.Format24bppRgb, _graphExportOptions.BackgroundColorForFormatsWithoutAlphaChannel)) { var scaledDocSize = _graphDocumentSize * _graphExportOptions.OutputScalingFactor; using (var enhancedMetafile = GraphDocumentExportActions.RenderAsEnhancedMetafileBitmapFormat(rgbBitmap, scaledDocSize)) { var hEmf = enhancedMetafile.GetHenhmetafile(); var bytes = DataObjectHelper.ConvertEnhancedMetafileToWindowsMetafileBytes(hEmf); var placeableHeaderBytes = DataObjectHelper.GetWmfPlaceableHeaderBytes(scaledDocSize); using (var stream = new System.IO.FileStream(_graphDocumentDropdownFileName, System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.Read)) { stream.Write(placeableHeaderBytes, 0, placeableHeaderBytes.Length); stream.Write(bytes, 0, bytes.Length); } } } } else // bitmap format { var bitmapToSave = _graphExportOptions.DropFileBitmapPixelFormat == _graphDocumentBitmapImage.PixelFormat ? _graphDocumentBitmapImage : GraphDocumentExportActions.ConvertBitmapToPixelFormat(_graphDocumentBitmapImage, _graphExportOptions.DropFileBitmapPixelFormat, _graphExportOptions.BackgroundColorForFormatsWithoutAlphaChannel); bitmapToSave.Save(_graphDocumentDropdownFileName, _graphExportOptions.DropFileImageFormat); } }
private IntPtr RenderBitmapDIB(TYMED tymed) { ComDebug.ReportInfo("GraphDocumentDataObject.RenderBitmapDIB"); if (!(tymed == TYMED.TYMED_HGLOBAL)) { throw new ArgumentException(nameof(tymed) + " is not TYMED_HGLOBAL"); } if (null != _graphDocumentBitmapImage) { using (var convertedBitmap = GraphDocumentExportActions.ConvertBitmapToPixelFormat(_graphDocumentBitmapImage, System.Drawing.Imaging.PixelFormat.Format24bppRgb, _graphExportOptions.BackgroundColorForFormatsWithoutAlphaChannel)) { return(DataObjectHelper.RenderDIBBitmapToHGLOBAL(convertedBitmap)); } } else { throw new InvalidProgramException("Please report this exception to the author of the program and describe the steps to reproduce the exception"); } }