問題タブ [metafile]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
819 参照

grayscale - emf画像をグレースケールするにはどうすればよいですか

C# と Visual Studio 2010 を使用して、色付きの emf からグレースケールの emf を作成するにはどうすればよいですか? レコードを列挙して、何らかの方法で色の設定を変更する必要がありますか?

その結果、新しい emf イメージが必要になります。

0 投票する
1 に答える
1012 参照

c++ - C++ 拡張メタファイルを作成すると空のファイルになる

次のような拡張メタファイルを作成しようとしています。

ここでコードを取得しました

最終的に得たのは、整灭攮晭のような奇妙なエンコード名を持つ 0 バイトの非拡張子ファイルだけです。

何が問題になる可能性がありますか?

PS また、C# から c++/cli オブジェクトを介して混合モード アプリで呼び出しています。

編集奇妙なエンコーディングの問題は解決されましたが、作成されたファイルはまだ 0 バイトの長さです。どうすれば解決できますか?

0 投票する
3 に答える
1976 参照

delphi - ビットマップに変換せずにメタファイル イメージを回転することはできますか?

TMetafile イメージを少なくとも 90 度ずつ回転させる必要があります。メタファイルをビットマップ キャンバスに描画し、ビットマップを回転することで簡単に回転できますが、ベクター イメージ形式で保持することをお勧めします。これはまったく可能ですか?はいの場合、どうすればそれを行うことができますか?

0 投票する
2 に答える
1562 参照

c# - GetHenhmetafile() の呼び出しで "Parameter Not Valid" が発生し、メモリ内の Graphics オブジェクトを EMF として保存しようとしています

過去 2 週間、これに対する答えを無駄に探しましたが、困惑しています。

私はメタファイルから構築された Graphics オブジェクトからサンプル画像を作成するいくつかのコードを使用しており、Windows.Forms (コンソール アプリ) の必要性を避けるためにすべてメモリ ストリームに常駐しています。関数CopyEnhMetaFile(からインポートgdi32.dll) を使用して、メタファイルを実際の EMF としてディスクに保存します。ここここここ、およびここを参照して、これをどのようにまとめたかについての基本的なメモを確認してください。

単純な main() スクリプト ( codeprojectの例に見られるように) としてトップダウンで記述すると、問題なく動作します。しかし、メソッドを使用してメタファイル/グラフィックス オブジェクトをクラスにバンドルしようとすると、例外が返されるMetafileHandleため、 を取得できません。GetHenhmetafile()parameter is not valid

このソースによると、その例外は、メソッドが以前に少なくとも 1 回呼び出されたことを明確に示しています。しかし、私のコードを見てください。2回呼び出した場所は確かにわかりません。たぶんあなたはできる?

いずれにせよ、これらのオブジェクトを使用する方法 (MemoryStreams、Metafiles、または P/Invoked 関数) に関する基本的なことを完全に理解していないか、C# クラスの方法に関する基本的なことを見逃しているのではないかと強く思います。仕事、そして誰かが私を正しい方向に押し上げてくれることを望んでいました.

[提案に従って、成功したコードに追加し直し、壊れたコードのコンテキストビットのみを残すように編集]

動作したコードは次のとおりです。

そして、これが機能しないコードです。1 つの注記: 私は元々、上記の "using" 構造を使用して記述しましたが、同じエラーが発生しました。そのため、使用しているラッパーが何かを破壊するのが早すぎる可能性があるため、それを使用せずに再構築しました。どちらの方法でも同じエラーが発生しました。

ご覧のとおりGetHenhmetafile()、メタファイル自体を作成した直後に、コンストラクターに を入れています。このメソッドは、インスタンスごとに 1 回しか呼び出すことができないというメモでこれを行いました (たとえば、こちらを参照してください)。冒険好きの方は、リポジトリ全体をここで見つけることができます。

参考になれば、壊れたコードの例外の詳細を次に示します (内部例外は null です)。

0 投票する
1 に答える
395 参照

c# - メタファイルに Graphic.DrawLines(Pen pen, Points points) を使用すると、点数が多いと画像が開けない

GDI+ メタファイルに問題があります。グラフィックごとにメタファイルを保存したい。ポイント数が 10000 で、保存されたメタファイルを開くことができる場合にうまく機能します。ただし、ポイント数が多い場合 (例: count = 10000000)、mspaint.exe でメタファイルを開くことができません。

見逃したものはありますか?メタファイルのレコード サイズは制限されていますか? ちなみに、drawrectanglesこの問題もあります。

これが私のコードです:

0 投票する
1 に答える
585 参照

gdi+ - 配置可能なメタファイルのサイズ変更

標準の WMF ファイルでは、18 バイトのヘッダーの後に GDI コマンド レコードが続くことを知っています。簡単な Web 検索で、次のことがわかります。しかし、私はそのようなメタファイルタイプの実際のアプリケーションを人手不足にしていませんか? 標準の WMF と比較して、このタイプはどのような要件に対処する必要がありますか? なぜ興味があるのですか?META ファイルからビットマップを構築しようとした時点で失敗する WMF のサイズを変更して GIF に変換するための次のコードがあります。

「引数が無効です」という例外が発生します。

(int)(scale * img.Width / header.DpiX * 100) = 22181 (int)(scale * img.Height / header.DpiY * 100)) = 33718

[1 つのビットマップに一度に割り当てられるメモリが多すぎるため、すぐに例外が発生します]

配置可能なメタ ファイルのサイズを変更して変換するには、添付のコードをどのように変更しますか?

0 投票する
3 に答える
1819 参照

c# - ContentControl WPF にコンテンツが表示されない

WPFで EMF/WMF メタファイルをサポートするために、プロジェクトをhttps://silverlightcontrib.codeplex.com/ から WPF (github https://github.com/jogibear9988/silverlightcontrib ) に変換しました。

今私の問題は、EMF クラスはコンテンツを表示するために ContentControl を使用することです。Content も設定されていますが、何も表示されません。WPF-Inspector で確認すると、EMF コントロールのコンテンツが「論理ツリー」にリストされていますが、ビジュアルにはリストされていないことがわかります。誰でもこれで私を助けることができますか?

フォークの現在の状態はオンラインです (誰かがコードを見てくれれば!)

スヌープを見ると、すべて問題ないようです。

ここに画像の説明を入力

ご覧のとおり、Content Presenter には Content セットと Filled がありますが、Visual Tree には入りません...

WPF インスペクターの論理ツリーは次のとおりです。 ここに画像の説明を入力

そしてここにビジュアル: ここに画像の説明を入力