読者です 読者をやめる 読者になる 読者になる

やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

小さい画面でも色を表示したい

前回の色編集アプリを改修しました。 色を表示する面積を増やしました。

色を表示する面積を増やした

入手先

GitHub MEGA

問題

各コントロールの背景色を指定した色にしたからです。 しかし、たったそれだけなのに、たくさんの問題が出ました。

  • 文字が見えなくなる
  • TrackBarでちらつきが発生した TrackBarでちらつきが発生した
  • コントロールごとに色の反映に時差がある コントロールごとに色の反映に時差がある
  • NumericUpDownの数値表示が遅れる
  • NumericUpDownの上下ボタンの下部に前の色が残る コントロールごとに色の反映に時差がある

TrackBarをちらつかせずに背景色を反映する方法

方法

  • 文字が見えなくなる

    • 背景色と反対色を文字色に設定してみる
      • RGB(128,128,128)で見えなくなった
        • 所定範囲内の場合、文字色を黒で表示てみる
          • とりあえずこれで妥協しておく
  • TrackBar

    • 背景色に直接色をつける
      • ちらつく
      • コントロールごとに色が反映されるまで時差がある
    • 背景色を透明色にする
      • TrackBar.BackColor = Transparent;はサポートされていない
    • SetStyle(ControlStyles.Opaque, true);で背景色の描画を抑制する
      • Panel.Update();との併用で解決した!
  • Panel

    • 色の反映に時差がある
      • Panel.Update();で解決した!
  • NumericUpDown

    • NumericUpDown.Refresh();で解決した!

所感

とてつもなく苦労しました。 本当は色々ありましたが書ききれません。要点だけ書き残しました。 コントロールや描画まわりは大変です。