問題タブ [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.
qt - Qtのベクトルグラフィッククリップボード形式
Qtアプリケーションで、互換性のある方法で単純なベクターグラフィックをクリップボードに保存できるようにしたいと思います。Windowsでは、グラフィックをMicrosoftWordまたはPowerpointに貼り付けられるようにしたいと思います。Linuxでは、OpenOfficeと互換性があります。
どのフォーマットをお勧めしますか?Qtは簡単な方法でEMFを生成できますか?SVGはオプションですか?
アップデート:
私の現在の計画は、ネイティブのwin32コードを追加して、Windows上のemfにグラフィックをレンダリングすることです。このコードはLinuxでは利用できません。
.net - CreateEnhMetaFile と PlayEnhMetaFile に相当する .NET は何ですか?
複数のページで構成される印刷ジョブを作成する VB.NET にいくつかの C++ コードを移植しています。すべてのページには、各ページで同じままであるグラフィック オブジェクト (テキスト、線、曲線など) のテンプレートがあり、その上に各ページの異なるデータがオーバーレイされます。
テンプレートは、印刷ジョブの開始時に を使用してメモリ内メタファイルとして作成され、CreateEnhMetaFile
各ページの開始時に、 を使用してこのメタファイルが印刷デバイス コンテキストに描画されますPlayEnhMetaFile
。
.NET でこれを行うにはどうすればよいですか? これまで API を読んだところ、Metafile
ファイルまたはストリームからインポートすることしかできず、最初から作成することはできないようです。これは正しいです?
delphi - TMetafile と TMetafileCanvas の操作に関するドキュメントやサンプルはどこにありますか?
アプリケーションにカスタム印刷を追加する作業を行っているため、TMetafile を使用してページを作成し、それを使用してプレビューおよび/または印刷することにしましたが、ドキュメントが不足していることに気付きました。
TMetafile と TMetafileCanvas の操作の詳細を学習するための優れたリソースはありますか?
.net - 信頼性の高い.wmf/wmfからピクセルベースの画像変換
こんにちは、
透明な領域を含む.wmfファイルの.netの内部(System.Drawing)ベースのMetaFile/画像処理に少し問題があります。基本的に、MetaFile.LoadFile(...)を実行し、それをtiff / pngなどとして保存するときはいつでも、そのソースファイルの一部の領域が欠落しています。実際に特定することはできませんが、メタファイル内のベクターベースの情報は問題なく機能しているようですが、ピクセルベースの領域(.wmf内に配置された画像など)が欠落しています。
信頼できる.netネイティブでサードパーティ以外の方法でwmfファイルを適切に変換する方法を知っている人はいますか(最終的なピクセルベースの画像は.wmf ..ちょうど..よく..ピクセル化されているように見えます)?
乾杯と感謝、-J
.net - メタファイルからJPEG/GIFへのGDI+画像変換の結果、背景が黒になります
だから私はメタファイル(正確にはEMF)をjpegまたはgif(ブラウザと互換性がある限り関係ありません)に変換しています、そして私が変換を行うとき、すべての透明なピクセルは黒くなります。GDI +でこれを行う方法がわかりませんが、ファイルを保存するために使用している方法は次のとおりです。
gdi - GDIデバイスコンテキストのDPIを指定する
メタファイル(EMF)を生成するアプリケーションがあります。参照デバイス(別名画面)を使用してこれらのメタファイルをレンダリングするため、メタファイルのDPIは、コードが実行されているマシンに応じて変化します。
私のコードが8.5インチx11インチのメタファイルを作成しようとしているとしましょう。開発ワークステーションを参照として使用すると、EMFが次のようになります。
- {0、0、21590、27940}のrclFrame(1000分の1 mm単位のメタファイルの寸法)
- {1440、900}のszlDevice(参照デバイスの寸法(ピクセル単位))
- {416、260}のszlMillimeters(参照デバイスの寸法(mm))
さて、rclFrameはEMFのサイズが
- 21590/2540=幅8.5
- 27940/2540=高さ11
右に。この情報を使用して、計算が正しければ、モニターの物理DPIも決定できます。
- (1440 * 25.4)/ 416=87.9231水平dpi
- (900 * 25.4)/ 260=87.9231垂直dpi
問題
このメタファイルを再生するもの(EMFからPDFへの変換、WindowsエクスプローラーでEMFを右クリックしたときの[概要]ページなど)は、計算されたDPI値を切り捨てて、87.9231ではなく87を表示するようです( 88で十分です)。
これにより、メタファイルの再生時に、物理的なサイズが8.5インチx 11インチ(88 dpiを使用)ではなく、8.48インチx 10.98インチ(87 dpiを使用)になります。
- DPIの計算に使用されるメタファイルに格納されている情報が適切な整数になるように、参照デバイスのDPIを変更することはできますか?
- 独自のデバイスコンテキストを作成してそのDPIを指定できますか?それとも、それを行うために本当にプリンターを使用する必要がありますか?
洞察をありがとう。
c# - バイト配列からポリライン メタファイル レコードを解析するにはどうすればよいですか?
次の Windows GDI 型を C# で定義する際に少し助けが必要です。C#で a の形式のデータがありbyte[]
、C# で次のようにマーシャリングまたはキャストする必要があります。適切な構造体を定義する必要があると思いますか? これはタイプです:
名前
最も近い API 呼び出し
説明
ポリラインはポイントのリストです。ポリゴンとは異なり、ポリラインは常に塗りつぶされておらず、開くことができます。
c# - バイト配列から CREATEPENINDIRECT メタファイル レコードを解析するにはどうすればよいですか?
次の Windows GDI 型を C# で定義する際に少し助けが必要です。C#で a の形式のデータがありbyte[]
、C# で次のようにマーシャリングまたはキャストする必要があります。ポリラインへの回答を得たので、他の質問を参照してください。これはタイプです:
名前
最も近い API 呼び出し
説明
lopnColor はペンの色、lopnWidth はペンの幅です。ペンの幅が 1 より大きいが、lopnStyle がソリッドでない場合、lopnStyle は無視され、とにかくソリッドに設定されます。
lopnStyleは、、、、、、、、、
PS_SOLID
のいずれかPS_DASH
です。PS_DOT
_PS_DASHDOT
_ それらが実際に意味することについては、ソースを確認してください。PS_DASHDOTDOT
PS_NULL
PS_INSIDEFRAME
PS_USERSTYLE
PS_ALTERNATE
また、lopnStyle には、ペンで描かれた線の終了スタイルと結合スタイルを設定する
PS_STYLE_MASK
フラグとマスクのセットもあります。これらを把握します。PS_ENDCAP_ROUND
PS_ENDCAP_SQUARE
PS_ENDCAP_FLAT
PS_ENDCAP_MASK
PS_JOIN_ROUND
PS_JOIN_BEVEL
PS_JOIN_MITER
PS_JOIN_MASK
PS_COSMETIC
PS_GEOMETRIC
PS_TYPE_MASK
更新:これは私がこれまでに得ることができる限り近いです:
c# - byte[] c# から PolyPolygon16 メタファイル レコードを解析するにはどうすればよいですか?
次の Windows GDI 型を C# で定義する際に少し助けが必要です。C#で a の形式のデータがありbyte[]
、C# で次のようにマーシャリングまたはキャストする必要があります。
これはタイプです:
編集:私はこれまでのところ、近くに到達することができましたが、完全ではありません:
vb.net - VB.net MetaFile / EMFをビットマップ(.tiff)として保存する
現在、メタファイルを生成するサードパーティのコントロールがあります。問題なく.wmfファイルをディスクに保存できます。問題は、メタファイルをTiffファイルとしてレンダリングする方法です。
現在、メタファイルを取得して保存するための次のコードがあります。
サブ終了
_パブリック共有関数GetEnhMetaFileBits(ByVal hEMF As System.IntPtr、ByVal nSize As UInteger、ByVal lpData As IntPtr)As UInteger End Function
あらゆる種類のIMAGEおよびGraphic呼び出しを試しましたが、メタファイルを.tiffとして保存できません。どんな提案も素晴らしいでしょう。新しいビットマップを作成して、その上にメタファイルを描画しようとさえしました。私はいつもGDI例外がスローされることになります。