2011-08-11 14 views
8

wpfのテキストボックスの選択を赤に設定し、カラーピッカーを使用して色を確認すると、色が#FF9999に色あせて表示されています。WPFの選択ブラシの色を計算する

私はクライアントが選択ブラシに必要な特定の色を持っています。 SelectionBrushをどの色に設定すべきかを計算する方法はありますか?テキストが選択されている場合、正確な色が表示されますか?

現在、選択ブラシは#6599D1にする必要がありますが、一度設定すると色は#C1D6EDです。

どのようにして開始色を計算すれば、終了色が必要なのでしょうか?

+1

TextBox外観は、あなたが色を設定するために使用されるコードを与えることができる方法ですか? – Jakub

+0

あなたの色が半透明になっていると思われ、不透明にする必要があります。どのように色を変えているのかわからなくても、それ以上のことを提案する簡単な方法はありません。 –

+0

高度なカスタムスタイルを実行しようとしている場合は役に立ちませんが、システムのデフォルトの色を残す方が好きで、カスタムコントロールを作成するときは、同様のコンテキストからシステムのデフォルトの色を借りてください。これは、Windowのアクセシビリティモードとの互換性のために役立ちます。そして、ユーザは、厄介なビジュアルクラッシュを引き起こすことなく、ウィンドウのテーマ機能を使用することができます。 –

答えて

2

いい質問ですが、これは不可能だと思います。 ControlTemplateの内部にオーバーレイがある場合は、より暗い色を計算する関数を作成することはできません。この関数は目的の色になります。

赤色を入力すると255,0,0255,153,153になります。最初の色に適用する必要がある機能は赤を暗くする必要がありますが、これは緑色と青色がすでにゼロであるため、赤色チャネルでのみ行うことができます。ただし、問題は赤のチャンネルではなく(255になり、影響を受けません)、その変更は色を暗くする代わりに色をさらに彩度を低下させるだけになります。

編集:このもう少し数理にするために、選択の透明度によって適用される関数である:

F(X)= 0.4X + 153

これをあなたの色のすべてのチャンネルに適用すれば、これは確かに当てはまります。今、私たちが望む価値をどのように得るのでしょうか?非常に簡単、私たちはこれです機能、反転:

fは^( - 1)(x)は= -2.5(153.0 - x)の

グレート!今すぐあなたの色にそれを適用することができます:

R:-130.0
G:0
B:140

うーん、結局それほど大きくない、私は考えます。

この負の値は、これが常に可能ではない理由であり、153以下の成分を持つすべての色は元に戻せません。

3

H.B.

によって答えにフォローアップ私は

(Red - (1-Opacity) * BackgroundRed)/Opacity = OriginalRed 

TextBoxが持つデフォルトBackgroundセットに反転し、過去

Red = OriginalRed * Opacity + (1-Opacity) * BackgroundRed 

に次の式で不透明度を計算しました白に、SelectionOpacityを0.4に設定します。
H.B.赤の値が-130になるので、これらのデフォルト設定ではあなたの色を達成することはできません。これはおそらくTextBox Backgroundを変更する3つのオプション、変更BackgroundSelectionOpacityを変更したり、それをしない:)

であなたを残しますが、そのためには、オプション2を離れたんたいものではありません、「私たちはドンSelectionOpacity

を変更トンレッドが0を下回る

1 - (101/255) = Opacity 

これは0604秒で結果が得られるので、

(101 - (1-Opacity) * 255) = 0 

に行きたいですo SelectionOpacity値でSelectionBrush#0056B3に設定する必要があると計算すると、不透明度が適用されてから#6599D1になります。ここで

は、これらの値

<TextBox SelectionBrush="#0056B3" 
     SelectionOpacity="0.604" /> 

enter image description here

+0

面白いアイデアだが、そのような高い値では、テキストは明らかに読みにくくなってしまう。 –

+0

@HB:確かに、 'TextBox'全体が少しぼやけて見えますが(アプリケーションで少し上手くなります)、はい、それは確かに読みにくいです。 –

+0

最後のコメントをしないでください。私のWindows 7のコンピュータではぼやけますが、別のコンピュータからは鮮明に見えます... –

関連する問題