下面的C#代碼應該產生一個EMF,但查看輸出(在Vim中)顯示它是一個PNG。也許是S.O.上的某個人知道一個好的解決方法或解決方案。.NETLink生成PNG而不是EMF的圖形
MathKernel k = new MathKernel();
k.CaptureGraphics = true;
k.GraphicsFormat = "Metafile";
k.Compute("Show[Graphics[{Thick, Blue, Circle[{#, 0}] & /@ Range[4], Black, Dashed, Line[{{0, 0}, {5, 0}}]}]]");
k.Graphics[0].Save("C:\\Temp\\file.emf", System.Drawing.Imaging.ImageFormat.Emf);
到目前爲止,我在考慮包裝展[圖形...]在ExportString [......, 「EMF」]和收集使用MathKernel Result屬性的結果。
補遺
的MathKernel.Graphics屬性[1]顯然是一個淨圖形方法,其只處理圖像文件,例如位圖,而不是矢量圖形基於增強型圖元文件。
增強型圖元文件可通過.NETLink一次一個雖然被轉移,以下面的方式:
using System;
using System.IO;
using Wolfram.NETLink;
public class Example
{
public static void Main(String[] args)
{
MathKernel k = new MathKernel();
k.Compute("ExportString[Graphics[{Disk[]}], {\"Base64\", \"EMF\"}]");
byte[] decodedBytes = Convert.FromBase64String(k.Result.ToString());
// The transferred EMF can be used or simply written out to file.
File.WriteAllBytes("C:\\Temp\\file.emf", decodedBytes);
}
}
您是否已經從MathKernel啓動了一個非交互式前端過程,並將latted配置爲使用前者作爲'$ FrontEnd'?可能EMF文件由FrontEnd生成,不能在沒有它的情況下創建。請注意,* Mathematica *只能在Windows下導出EMF文件。 –
@ Alexey - 謝謝。很可能EMFs只能在FrontEnd中生成。 MathKernel.GraphicsFormat儘管列出了「圖元文件」作爲輸出格式。等着瞧。 http://reference.wolfram.com/legacy/v7/NETLink/ref/net/Wolfram.NETLink.MathKernel.GraphicsFormat.html –
在該頁面上,您所獲得的PNG格式未列出。 –