問題タブ [drawingcontext]
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.
wpf - DrawingContext.DrawLine: ペンに完全な不透明度がありませんか?
私がそのようなものを描くとき(ここではランダムな絵だけ):
DrawLine と DrawEllipse の色が混ざります。(ペンを使用するのは DrawLine のみであり、ブラシを使用する Rectangle や Ellipse などの他のフォームではないことがわかりました)。不思議なことに、基礎となるグリッドの背景 (argh) の LinearGradientBrush からの色でも。 それらをそれぞれ完全な不透明度で z オーダーにしたいと思います。
XAML コードは次のとおりです。
助けてくれてありがとう。
wpf - WPF DrawingContext で回転した画像を描画するときの DrawImage フィルタリング
コントロールに画像を描画していますが、通常は数度回転しています。これにより、適切なフィルタリングが重要になりますが、最近傍の問題のように見えるアーティファクトが見られます。画像を描画するときに使用するフィルターはどこで設定できますか?
画像は、画面上の結果のサイズよりも大きくなります。
wpf - マルチスレッド画像合成
WPF イメージングを使用して、DrawingVisual を使用してテキスト、3D グラフィックス、および画像を合成しています。結果は RenderTargetBitmap にレンダリングされ、jpeg としてディスクに保存されます。これらはすべて、ビジュアル ウィンドウのないコードで行われます。
一度に 1 つのことだけを実行しようとしている限り、うまく機能しています。ただし、複数のスレッドを使用してレンダリングを行うことで速度を上げることができるかどうかを確認したいと思います。各スレッドは、独自の DrawingContext、DrawingVisual などを作成するオブジェクトを使用します。ただし、並列にアクセスしようとすると誤ったエラーが発生するため、どこかに共有状態があることは明らかです。「別のスレッドが作成したため、呼び出し元のスレッドはこのオブジェクトにアクセスできません」という場合があります。また、たとえば 3D ジオメトリにポイントを追加しているときに、WPF の腸から NullReferenceExceptions が泡立ち、見た目が悪い場合もあります。
各スレッドが WPF で互いに離れていることを確認する方法はありますか? それとも共有状態は避けられないのでしょうか?
c# - DrawingContext から Bitmap ファイルへ
DrawingContext (Visual または DrawingGroup の一部) があり、そこで多数の四角形や 1 ビット イメージを重ねて描画します。マスキング 1 ビット イメージと考えてください。これをビットマップ画像ファイルに変換したいと思います。
RenderTargetBitmap
32 ビット ピクセル形式でしかレンダリングできないため、使用はオプションではありません。そのため、20 MB の 1 ビット イメージをレンダリングする必要がある場合、ヒープに 640 MB (20*32) のメモリが必要になります。もちろん、これは壮大な LOH フラグメンテーションを作成し、アプリケーションは 2 回目のショットでメモリ不足になります。
したがって、基本的には、描画コンテキストから 1 ビットのビットマップ ファイルを効率的に書き込む方法が必要です。アイデア/提案/代替方法をいただければ幸いです。
c# - DrawingContext の角度で DrawText?
したがって、次のコードを使用して、入力フォームから既存の画像とテキストを取得し、入力フォームからのテキストを既存の画像に配置して、新しい画像として保存しています。
ご覧のとおり、次の関数を呼び出してテキストを描画します。
今私が必要とするのは簡単です...中央の位置から角度を付けてtext2(およびtext2のみ)を描画する必要があります。中央の位置は単純です。次のようになります。
では、このテキストを、中心位置で回転させて -30 度の角度で描画したい場合はどうすればよいでしょうか? 他のテキストではなく、元の画像ソースでもなく、テキスト 2 のみを回転させたいことを覚えておいてください。
c# - DrawContext変数にグローバルにアクセスできますか?(私のアプリのどのクラスでも)
私のプログラミングスキルはあまり良くなく、C#ではまだ非常にアマチュアです。ここで行っているのは、ジョイント間の角度を見つけることです...角度が70〜90になるときです。タイマーが開始し、Drawcontext.DrawTextメソッドを使用すると、画面にメッセージが表示されますが、ご覧のとおり、DrawContextの新しい変数を導入して、それに描画の値を割り当てようとすると、on_time_eventの描画変数にアクセスできません...それ与えると例外...Drawコンテキストの新しい変数に値が割り当てられなかったため、どうすればよいですか?この点で助けてください私は非常に役に立ちます
c# - DrawingContext を使用して中心を基準にして描画する
DrawingContext
コントロールの左上隅ではないものに関連するものをWPFで描画する方法を考えていました。私の問題は、さまざまなドットを接続していくつかの形状を描画したいということです。これらのドットは、Y が上向きになるように、ホスト コントロールの中心に対して配置する必要があります。
私の要素はカスタムDrawingVisual
サブクラスのツリーを使用してレンダリングされ、ルートBorder
はVisualCollection
. Y 方向の問題は、 aScaleTransform
をその として指定RenderTransform
しBorder
、基本的にコントロール全体を垂直方向に反転することで解決しました。
ただし、他の問題についてはそのような運はありません。私の起源を中心に置く方法について何か考えはありますか?
c# - Dispather タイマーで描画コンテキストにアクセスすると例外が発生する
私がやろうとしているのは、最初に肩関節の角度を見つけることです.今までなんとかそれを行うことができました.私が今やりたかったことは、角度が70から90の範囲に入ると、時間が3秒から始まります.毎秒、角度がまだ範囲内にあるかどうかを確認し、それが画面に表示されている場合は問題ありません。それ以外の場合は、メッセージを表示した後にタイマーを再起動します。時間制限を完了していません。この点については、直面している問題の画像へのリンクが役立ちます: http://i46.tinypic.com/2nu4ygw.jpg
助けてください!!
コードのこの部分で例外が発生します
wpf - WPFDrawingContext.DrawLineの最適化
を使用する以外に、WPFで線を描画するより効率的な方法はありますか?
私のアプリケーションでは多くの線画を描いていますが、99%の時間がこの呼び出しを行うループに費やされています。
[a、b]は、絶えず変化している非常に多くのポイントのリストから来ています。入力フィードバック/イベントなどは必要ありません...ポイントを非常に速く描画する必要があります。
助言がありますか?
c# - ファイルから画面へのスケルトンアニメーションの描画
私が基本的にやろうとしているのは、C#とKinect SDKを使用してkinectスケルトンフレームデータ(ジョイント位置)をファイルに書き込み(完了)、このデータを外部で処理(完了)してから、データをアプリケーションに読み戻す(完了)ライトポイントウォーカー(スケルトンジョイント)としてフレームごとにデータを描画するので、アニメーションが表示されます。(問題)
私の質問は、C#(およびそのDrawingContextクラス)を使用してこの30fpsアニメーションを描画するにはどうすればよいですか?
レコーディング中にすでにSkeletonFramesのライブ出力に使用しているため、DrawingContextを使用したかったのです。そこでは、「Skeleton Basics」SDKの例と同様に、次のように簡単に実行されます。
したがって、kinectは約でフレームを提供してくれます。イベントを使用して30fpsで、データを描画するだけです。
しかし、kinectがなく、データがファイル/メモリから読み取られる場合、どうすれば描画できますか?(現在、2DArray [フレーム、ジョイント]を使用しています)
スレッドを30fpsで実行することを考えました(フレームレートを達成するためにスリープを使用)。その後、同様のイベントを送信するか、直接描画します。しかし、これを機能させる試みは完全に失敗しました。たとえば、描画のためにイベントがメインスレッドに送信されませんでした。
問題は、C#を理解していないことかもしれません(私はまったく新しいです)...
これを設定して機能させる方法についてのヒントはありますか?