2

選択した PowerPoint 図形を XAML に変換して、同等のベクトル ベースの図形を WPF アプリ内に効果的に配置できるようにする必要があります (XAML の最終結果はスケーラブルである必要があります。画像に変換すると、目的が達成できなくなります)。 .

PowerPoint アドインを作成するなど、さまざまな方法でこれを実現できます (PowerPoint で選択した図形のベジェ ポイント座標にアクセスできる場合)。これが可能かどうかを知るには、私は PowerPoint アドインに十分に精通していません。

私の最初のアプローチは、PowerPoint の図形をクリップボードにコピーし、クリップボードの内容を理解できるオブジェクトに変換して、そこから XAML を生成することでした。これを行うと、(Art::GVML ClipFormat を介して) DrawingML 表現に到達できますが、その DrawingML を XAML に簡単に変換する方法は不明です (ゼロから作成するのに数週間のエラーが発生しやすい作業のように見えます)。

クリップボードには他の形式 (EMF、System.Drawing.Imaging.Metafile、PowerPoint 12.0 Internal Shapes) がありますが、それらはすべて行き止まりのようです。

助言がありますか?

4

1 に答える 1

2

これを試すことができます:

Powerpoint シェイプから WMF へ

Microsoft.Office.Interop.PowerPoint.Application app = new Microsoft.Office.Interop.PowerPoint.Application();
var pps = app.Presentations;
string d ="filepath.pptx";
Presentation ppt = pps.Open(d, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);
for (int j = 1; j < ppt.Slides.Count; j++)
{
    Slide sld = ppt.Slides[j];
    List<Microsoft.Office.Interop.PowerPoint.Shape> shapes = new List<Microsoft.Office.Interop.PowerPoint.Shape>();
    for (int k = 1; k < sld.Shapes.Count; k++)
    {
        Microsoft.Office.Interop.PowerPoint.Shape shape = sld.Shapes[k]; 
        shape.Export("outputFilePath.wmf", PpShapeFormat.ppShapeFormatWMF);
    }
}

次に、WMF から XAML へ: Microsoft フォーラム:

1) http://www.wpf-graphics.com/ReaderWmf.aspxをチェックしてください。これは関連プロジェクトhttp://www.wpf-graphics.com/Paste2Xaml.aspxです。これらは、WPF 用の EMF/WMF リーダーです。画像を読み込んで再度書き戻す単純なユーティリティを作成します。私は彼らと少し遊んだことがありますが、彼らとはかなり幸運でした。彼らがあなたのために働くなら、これが私の最初の選択です. もちろん、それらをテストする必要があります。このような変換は、さまざまな形式の設計の違いにより完全ではないため、コンバーターでサポートされていないものを使用していないことを確認してください.

2) 私が遭遇した別のプロジェクトはhttp://lab.aspitalia.com/15/EmfToXaml-Beta.aspxでした。私はそれで遊んだことはありませんが、あなたはそれを見てみるかもしれません.

3) 直接ルートが機能しない場合は、WMF ファイルを SVG などの別のベクター形式に変換してから、その SVG ファイルを XAML に変換することを検討してください。EMF/WMF から SVG への変換用のツールはたくさんあります。SVG から XAML への変換については、http://www.codeplex.com/XamlTuneおよびhttp://www.wpf-graphics.com/ReaderSvg.aspxを参照してください。これが直接変換と同様に機能するとは思えませんが、わかりません。

PowerPoint アドインについて、および上記の例を実行するには、Microsoft Office Interop ライブラリが必要です。

于 2015-08-19T14:29:44.907 に答える