問題タブ [direct2d]
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.
text - WindowsAPICodePack を使用してテキストにアウトライン効果を実装する方法は?
他の要件が完了した後も、この問題についてまだ苦労しています。GeometrySink 同様のクラスを使用してアウトライン効果を実装できることがわかりました。しかし、私は c++ に慣れていません。この記事を参照してください: http://msdn.microsoft.com/en-us/library/dd317121.aspx
ID2D1GeometrySink インターフェイスを使用して、直線、曲線、円弧で構成される一連の図形を指定すると、より複雑な形状を作成できます。ID2D1GeometrySink は、複雑なジオメトリを生成するために ID2D1PathGeometry の Open メソッドに渡されます。ID2D1SimplifiedGeometrySink を DirectWrite API と共に使用して、芸術的なレンダリングのために書式設定されたテキストのパス アウトラインを抽出することもできます。
ご提案やアイデアがありましたら、お知らせください。
よろしく、 ハワード
gdi+ - GDI+ DrawImage を PInvoked GDI と透過 PNG に置き換えます。
C# でイメージ サービスを作成しました。このサービスは、ベース レイヤー イメージ (JPG) を受け取り、もう 1 つ透明な PNG (32 ビット) をレイヤー化し、最終的な JPG イメージを出力します。この関数から最後のミリ秒をすべて絞り出そうとしていますが、GDI+ の DrawImage 呼び出しでコードがボトルネックになっています。マネージ コードは次のとおりです。
ここで、P/Invoke で GDI を直接呼び出すことによって得られるパフォーマンスの向上について読み、DrawImage 呼び出しを置き換えることを試みました。単体テストを作成して、JPG をロードし、その上に 1 つの透明な PNG を重ねるという同じ機能を再現しようとしました。
参照: http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/29582142-0068-40dd-bd99-4b3883a76350
しかし、これは階層化されたイメージを生成できません。ベースJPGなしのPNGのみ。どうすればいいですか?ストレート GDI に関して言えば、私は自分のリーグから少し外れています。
c++ - Direct2D を使用したビットマップの一部のレンダリング
カスタム CAD ソフトウェアを GDI から Direct2D に変換中です。図面をパンするときに問題が発生します。私がやりたいことは、描画ウィンドウの幅の 3 倍、高さの 3 倍のビットマップを作成することです。次に、ユーザーがパンを開始すると、表示されるビットマップの部分をレンダリングします。
問題は、レンダー ターゲットよりも大きなビットマップを使用できるように見えないことです。これまでに行ったことはおおよそ次のとおりです。
したがって、ビットマップのサイズを確認すると、問題なくチェックアウトされます。これは、hwnd レンダー ターゲットではなく、ビットマップ レンダー ターゲットのサイズです。しかし、x1 と y1 を 0 に設定すると、ビットマップの左上隅が描画されるはずです (これは画面外のジオメトリです)。ただし、画面に表示されているものの左上隅を描画するだけです。
誰もこれについて経験がありますか?かなり大きなビットマップを作成し、その一部をより小さいサイズのレンダー ターゲットにレンダリングするにはどうすればよいですか? 私はパンしているので、マウスが動くたびにレンダリングが行われるので、適度なパフォーマンスが必要です。
c++ - C++Direct2Dマトリックス変換ミラー
私は現在DirectX(2010年6月のSDK)を学習しており、画面にビットマップを描画しています。ここで、これらの画像に対して変換を実行できるようにしたいのですが、x軸またはy軸に沿って画像をミラーリングできません。
描画する前に、描画操作に適用される変換行列を設定できます。DirectXはD2D1_MATRIX_3x2_Fタイプを使用していますが、MSDNによると、このマトリックスの2x2部分のみが変換に使用されます。たとえば、行列{[1、0]、[0、1]、[0、0]}は、すべてを自然に表示する単位行列です。
私が理解しているように、x軸に沿って画像をミラーリングするための行列変換は次のようになります:{[1、0]、[0、-1]、[0、0]}、そしてy軸に沿ってその場合、{[-1、0]、[0、1]、[0、0]}になります。ただし、これらの行列を変換に使用すると、黒い画面が表示されます。
私にとっての問題は、この問題が何によって引き起こされるのか、あるいはそれがこの背後にある数学の論理的エラーによって引き起こされるのか、それとも実装自体によって引き起こされるのか、という考えがないまま、この時点で立ち往生していることです。残念ながら、Direct2D RenderTargetのヘッダーファイルに「ミラーリングは行列変換を使用して実行する必要がある」という1行のコメント以外に、これに関する資料は見つかりませんでした。
これをテストするために現在使用しているソースコードは次のとおりです。
directx - ID2D1PathGeometry からのパス セグメントの取得
私は現在、楽しみのために SlimDX を使用して C# で小さなゲーム エンジンを作成しようとしています。
世界を破壊可能にしたいので、マップを変更できる必要があります。私のマップは現在ベクター ベースで、 ID2D1PathGeometry (SlimDX の PathGeometry) オブジェクトで表されます。このオブジェクトは、ID2D1Geometry (SlimDX の Geometry) の CombineWithGeometry メソッドを使用して変更されます。
妥当な衝突検出を行うには、ID2D1PathGeometry オブジェクトの正確な形状に関する知識が必要です。たとえば、ボールが壁に跳ね返る角度を計算する場合などです。
では、ID2D1PathGeometry オブジェクトのすべてまたは特定の (場所ごとの) セグメント/ライン/ポイントにアクセスすることは可能ですか? または、すべての線と形状を別のデータ構造に追加で保存するなど、私の目標を達成するための他のより良い方法はありますか?
マップ サイズの制約としてメモリを使用したくないため、ビットマップ ベースのマップはここでは使用しないことに注意してください。
敬具、エミ
direct2d - Direct2D を使用してピクセルを操作する方法
Direct2D を使用してピクセルを操作する効率的な方法の例を誰かが提供できますか?
たとえば、レンダー ターゲットですべての緑のピクセル ( RGB = 0x00FF00
) を赤のピクセル ( ) と交換するにはどうすればよいでしょうか? RGB = 0xFF0000
標準的なアプローチは何ですか?そのために使用することは可能ID2D1HwndRenderTarget
ですか?ここでは、ある種のハードウェア アクセラレーションの使用を想定しています。ピクセルを直接操作するには、別のオブジェクトを作成する必要がありますか?
DirectDraw を使用して、論理演算でBltFast
メソッドを使用します。IDirectDrawSurface7
Direct2D に似たものはありますか?
もう 1 つのタスクは、各点の位置と色が数学関数の結果である複雑な画像を動的に生成することです。例として、すべてを単純化して描画してみましょうY = X ^ 2
。Direct2D でそれを行う方法は? 最終的には複雑な関数を描く必要がありますが、誰かが簡単な例を教えてくれたらY = X ^ 2
.
c++ - Direct2D デバイスでの C++ の円弧の描画
D2D デバイスでアークを描画する必要があります。これを行う関数はありますか? (DrawLine や DrawEllipse など) または、D2D1_ARC_SEGMENT 構造を返す ArcSegment 関数があることを確認しましたが、どうすればそれを描画できますか?
c++ - 遅延なくマウスの動きを機能させるには?
2 つの同心円の中心をクリックし、マウスを動かしてその位置を変更できるプログラムを作成しています。その半径で同じことができます。問題は、マウスの動きの後に円の描画からの遅延応答が続き、移動中に正確に同じ位置にあるのではなく、半径がマウスに追従することです。
あなたはそれをそのように機能させる方法を知っていますか?図面によるピンポイントフォロー。
マウスのクリックと動きを処理するコードの一部:
asp.net - SharpDXを介してDirect2D画像をレンダリングする場合、ファイルの代わりにメモリストリームをどのように使用しますか?
セットアップ
Direct *ライブラリのマネージラッパーであるSharpDXを使用して、ビットマップをレンダリングし、PNGとして保存する特定のスクラッチプログラムについて考えてみます。
このプログラムを実行すると、プログラムの作業ディレクトリに「test.png」ファイルが作成され、次の美しい画像が表示されます。
質問
素晴らしいです。GDI+の代わりにDirect2Dを使用して画像をレンダリングしました。これは、ASP.NETアプリケーションのコンテキストでよりサポートされていると思われます。さらに、Direct2Dは新しい注目度です。
Stream
このような画像をレンダリングし、PNGをまたはbyte[]
配列として返し、ファイルシステムに書き込む代わりに、レンダリングおよびエンコード操作全体をメモリ内で実行する関数を作成したいとします。これは、Web要求に応答するためのものです。ファイルシステムを経由せずにブラウザに直接ストリーミングするのは理にかなっています。
GDI +では、これをMemoryStream
非常に簡単に行うことができDataStream
ましたが、バッファのサイズを知らなければ、SharpDXでの使用方法を理解することはできません。
- P / Invokeを実行し
CreateStreamOnHGlobal
、それを使用しIntPtr
てビルドする必要がありますDataStream
か? DataStream
私が見逃している過負荷はありますか?- エンコードされたPNG画像を保持するために必要なバッファを事前に計算する簡単な方法はありますか?
- それとも、ファイルシステムの処理をやり直す必要がありますか?
助けてくれてありがとう!
c++ - オブジェクトをマウスに追従させる
このトピックに近い他の質問は、私がそれを理解するのにあまり役立たないようです。Visual Studio と Direct2D を使用してプログラミングを始めたばかりで、楕円の中にある楕円である 2 つの「目」をマウスに追従させる方法がわかりません。
void MainWindow::CalculateLayout()
私が使用している関数の内部
目と眼球の位置を設定します。これに沿ったものを使用して、マウスの位置を制御する必要があると思います。フォームからではなく、空のプロジェクトからこれを実行しようとしています。const float x5=x-100
のX
値に単純に置き換える解決策はありMouseMove
ますか?