2017-04-21 19 views
0

私はVB.NETで書かれたVSTOを持っており、選択したイメージをバックグラウンドで最大化したい。ドキュメントには古いシェイプを削除し、AddPictureで新しいシェイプを追加するように指示されていますが、既にそこにイメージシェイプを含むテンプレートがあり、AddPictureは既にシェイプの1つにイメージを置きます。イメージを図形に置き換え、新しいものを追加しない

画像が間違った形で表示されないようにするには、元の画像をサイズ変更したものに置き換えてください。その後

dim src as PowerPoint.Shape = PowerPoint.Selection.ShapeRange.Item(1) 
src.Export(file1, PowerPoint.PpShapeFormat.ppShapeFormatPNG) 
dim img as Image = BitMap.FromFile(file1) 

その後、いくつかの画像魔法、そして:

これは私が持っているものである

img.Save(file2, PowerPoint.PpShapeFormat.ppShapeFormatPNG) 

Dim _S As PowerPoint.Slide = ppApp.ActiveWindow.View.Slide 
Dim _P As PowerPoint.Shape = _S.Shapes.AddPicture2(file2, MsoTriState.msoFalse, MsoTriState.msoTrue, 0, 0, _W, _H) 

しかし、それは間違っているテンプレート状に画像を置きます。

新しい形状を追加せずに図形内のイメージを実際に置き換える方法はありますか?

+0

あなたは[これを]試してみましたか(https://social.msdn.microsoft.com/Forums/en-US/39eb7cf4-2e85-4010-8e6a-10da20b352f7/replacing-changing-the-pictures-in-powerpoint-プレゼンテーション?forum = isvvba) –

+0

これはまさにポイントです。すべてのメソッドは古いシェイプを削除し、新しいタイプのイメージをタイプImageと挿入しているようです。しかし、私はaddtional shapeholdersを持っているテンプレートを持っているので、AddPictureメソッドは、私が絶対に望ましくないものの1つにイメージを挿入します。私は、既存の図形内の実際のイメージを置き換える方法を探しています。 – user3432565

答えて

1

画像を図形の中に挿入することはできません。場合によってはプレースホルダ内にのみ挿入することもできますが、そのようにしたくない場合もあります。

画像をに入力してください。の形になりますが、画像が歪んでも構わない場合を除き、画像と形の縦横比が一致する必要があります。

提案:新しい画像/図形を追加する前に、スライド上のすべての図形を繰り返して、プレースホルダ図形を探します。プレースホルダーシェイプがイメージ(コンテンツ、ピクチャ、クリップアートのプレースホルダー)を含むことができるタイプのものであれば、ダミーコンテンツ(Contentのテキストの数文字、他の2つのランダムピクチャ)で埋めてください。あなたのイメージを追加します。 「画像対応」プレースホルダが既に塗りつぶされているため、画像は新しいシェイプとして追加されます。その後、ダミーのコンテンツを追加した各図形を削除します。コンテンツを持つプレースホルダを削除すると、コンテンツが削除され、元の空のプレースホルダが残されます。

+0

実際これはまさに私が手動で行っていることです:)私が1つを忘れてしまったら、面倒で面倒です。私はイメージを置き換えることができると期待していたが、それは不可能に聞こえる。 – user3432565

+0

OK、これをもう一度試してみる時間がありますが、私があなたの答えを読んだときに私は動かないでしょう。まったく同じ問題に?ダミーのコンテンツをイメージ対応の図形にどのように置くのですか?それはここで問題のようなものです。もし私がそれを行うことができれば、私は必要な形で私のイメージを置くだろう、他のすべてのダミーイメージを入れない;)..任意のアイデア?このように厄介な問題のように聞こえます – user3432565

+0

ダミーのコンテンツを挿入したプレースホルダにタグを追加することができます:oSh.Tags.Add "Dummy"、 "Y"その後、実際のイメージを追加した後、スライド(Shapes.Countから1ステップ-1へ戻る)、If oSh.Tags( "Dummy")= "Y" Then oSh.Delete –

関連する問題