以下有一段代码将word公式转换为图片,但是不够清晰。用Graphics的属性CompositingQuality设置没有效果,请高手给帮忙处理一下。
foreach (OMath math in doc.Content.OMaths)
{
math.Range.Select();
math.Range.CopyAsPicture();
//doc.ActiveWindow.Selection.CopyAsPicture();
object start = 0;
object end = 1; object PDT = Microsoft.Office.Interop.Word.WdPasteDataType.wdPasteEnhancedMetafile; var range = math.Range.Next(); //doc.Range(ref start, ref end);
range.PasteSpecial(DataType: PDT); var rangImg = doc.Shapes.Range(ref end);
// 如何在这里设置参数将图片保存成高清?
rangImg.ConvertToInlineShape().Range.CopyAsPicture();
contan = Clipboard.ContainsImage();
rangImg.Delete();
using (var img = Clipboard.GetImage())
{
Graphics grh = Graphics.FromImage(img);
grh.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
img.Save(string.Format(imgdir + @"\{0}.wmf", i), ImageFormat.Wmf);
img.Save(string.Format(imgdir + @"\{0}.jpeg", i), ImageFormat.Jpeg);
}
foreach (OMath math in doc.Content.OMaths)
{
math.Range.Select();
math.Range.CopyAsPicture();
//doc.ActiveWindow.Selection.CopyAsPicture();
object start = 0;
object end = 1; object PDT = Microsoft.Office.Interop.Word.WdPasteDataType.wdPasteEnhancedMetafile; var range = math.Range.Next(); //doc.Range(ref start, ref end);
range.PasteSpecial(DataType: PDT); var rangImg = doc.Shapes.Range(ref end);
// 如何在这里设置参数将图片保存成高清?
rangImg.ConvertToInlineShape().Range.CopyAsPicture();
contan = Clipboard.ContainsImage();
rangImg.Delete();
using (var img = Clipboard.GetImage())
{
Graphics grh = Graphics.FromImage(img);
grh.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
img.Save(string.Format(imgdir + @"\{0}.wmf", i), ImageFormat.Wmf);
img.Save(string.Format(imgdir + @"\{0}.jpeg", i), ImageFormat.Jpeg);
}
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
System.Drawing.Imaging.ImageCodecInfo codec = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()[1]; System.Drawing.Imaging.EncoderParameters eParams = new System.Drawing.Imaging.EncoderParameters(1);
eParams.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);