3

そのため、ビデオ ソースのスナップショットを取得し、それを Image に取り込んで、Graphics オブジェクトを取得し、画像の右下にタイムスタンプを描画します。これまでのところ問題ありません。ただし、テキストの背後にある色が何色になるかは保証できないため、どのブラシを使用しても、描画されている画像の一部とほぼ確実に衝突し、テキストが読めなくなります.

その背後にある画像に基づいて文字列の最適な色を決定する方法 (.net のメソッドまたは適切なアルゴリズム) を誰かが知っているかどうか疑問に思っています。

乾杯

4

6 に答える 6

7
 just draw the string 5 times.
 One time 1(or2) pixels to the left in black
 One time 1(or2) pixels to the right in black
 One time 1(or2) pixels above it in black
 One time 1(or2) pixels below it in black
 and the final time in white on the place where you want it
于 2009-07-28T08:06:33.193 に答える
2

信頼できる唯一の方法は、対照的なアウトラインを使用することです。

于 2009-07-28T08:07:15.110 に答える
1

Commodore 64 スプライト グラフィックスの時代には、背景に対して何かを目立たせたい場合は、XOR ブリッティングを使用していました。これを「リバースビデオ」と呼ぶ人もいます。

を使用してこの方法で線を引くことはできますがControlPaint.DrawReversibleLine、テキストでは機能しません。

このCodeProject 記事では、interop to を使用して XOR ブラシを作成する方法を示しますgdi32.dll

于 2009-07-28T08:06:08.357 に答える
0

これは、 reinier による回答のさまざまなバリエーションである可能性があります。

  1. 下にあるテキスト (reinier が言及した 4 つのオフセットのもの) を黒ではなく、実際のテキストの前景色と対照的な色で描画します。
  2. テキストを 2 回描画します。1 回目は対照的な色で太字または少し大きめのサイズで、次にテキストの前景色でその上に描画します。座標を少しいじる必要があり、単語または文字ごとに描画を実行して、両方のパスを適切に整列させ、醜い最終結果を出さないようにする必要がある場合もあります。
  3. reinier が提案したことを実行しますが、おそらく 4 回 (4 方向すべて) ではなく、3 回または 2 回で、一種の「影付き」の外観を得ることができます。
  4. 「API 呼び出しを使用してピクセルごとにテキストを描画する」アプローチ全体を手放し、WPF 設計で使用できるような高度な多層合成技術を使用します。

最後のオプションの例については、 SlideShareのAdvanced OSM Cartographyのスライド 18 と 21をご覧ください。

于 2009-07-28T08:30:48.790 に答える
0

または、許可されている場合は、テキストに背景色 (任意) を使用できます (たとえば、黒い背景に白いテキスト)。

それ以外の場合は、テキストが書き込まれる四角形を (フレームごとに) キャプチャし、その負のイメージを作成してから、四角形の中央値の色を取得し、それを使用してテキストを書き込む必要があります。

より複雑なソリューションでは、2 つのレイヤー (最初の画像 - L1 とテキスト (透明な背景、黒のテキスト) - L2) を使用し、それらを結合する前に、L2 からテキストを含むすべてのピクセルを取得し、それぞれの色を変更します。テキストのピクセルを L1 の「負の」基になるピクセルの色値に変更しますが、「視聴者」の観点からはあまりにも使いやすいものは得られません。

于 2009-07-28T08:12:50.107 に答える