none
menuStripの色をグラデーションにするやり方を教えてください RRS feed

  • 質問

  • いつもお世話になっております。

     

    C#でメニュー(menuStrip)の色をグラデーションにしたいと思い、

    ネットで調べてやってみましたが、うまくいきません。

     

    やり方をご教示いただけないでしょうか。

    よろしくお願いします。

    2008年3月9日 10:10

回答

  • BackgroundImageプロパティを使って、

    グラデーションの画像を指定するのではダメでしょうか?

    2008年3月11日 14:14
  • こんにちは、ファクトです。

     

    MenuStripの描画は Rendererプロパティに設定したクラスが担当しているので、

    そこを細工すればメニューをグラデーションさせる事ができます。

    Rendererを自分で全て実装するのは手間なので、ToolStripProfessionalRenderer

    クラスを利用すると良いでしょう。コンストラクタの引数でColorTableが指定できます。

     

    ProfessionalColorTableのプロパティをいじると、色々な部分の色が変更できますよ。

     

    Code Snippet

    private void Form1_Load(object sender, EventArgs e)
    {
      ProfessionalColorTable table = new ProfessionalColorTableEx();
      menuStrip1.Renderer = new ToolStripProfessionalRenderer(table);

    }

     

    private class ProfessionalColorTableEx : ProfessionalColorTable
    {
      public override Color MenuStripGradientBegin
      {
        get { return Color.Red; }
      }

      public override Color MenuStripGradientEnd
      {
        get { return Color.Blue; }
      }
    }

     

     

    2008年3月12日 8:46

すべての返信

  • BackgroundImageプロパティを使って、

    グラデーションの画像を指定するのではダメでしょうか?

    2008年3月11日 14:14
  • こんにちは、ファクトです。

     

    MenuStripの描画は Rendererプロパティに設定したクラスが担当しているので、

    そこを細工すればメニューをグラデーションさせる事ができます。

    Rendererを自分で全て実装するのは手間なので、ToolStripProfessionalRenderer

    クラスを利用すると良いでしょう。コンストラクタの引数でColorTableが指定できます。

     

    ProfessionalColorTableのプロパティをいじると、色々な部分の色が変更できますよ。

     

    Code Snippet

    private void Form1_Load(object sender, EventArgs e)
    {
      ProfessionalColorTable table = new ProfessionalColorTableEx();
      menuStrip1.Renderer = new ToolStripProfessionalRenderer(table);

    }

     

    private class ProfessionalColorTableEx : ProfessionalColorTable
    {
      public override Color MenuStripGradientBegin
      {
        get { return Color.Red; }
      }

      public override Color MenuStripGradientEnd
      {
        get { return Color.Blue; }
      }
    }

     

     

    2008年3月12日 8:46
  • こんにちは。中川俊輔 です。

     

    wnkdr6572さん、ファクトさん、回答ありがとうございます。

     

    なっぷさん、フォーラムのご利用ありがとうございます。

    その後いかがでしょうか?

    有用な情報と思われたため、

    勝手ながらwnkdr6572さん、ファクトさんの回答へ回答済みチェックをつけさせていただきました。

    追加の質問等ありましたら、是非投稿してください!

     

    回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
    有用な情報と思われる回答があった場合は、なるべく回答済みボタンを押してチェックを付けてください。

    なっぷさんはチェックを解除することもできますので、ご確認ください。

     

    それでは!

    2008年3月18日 5:58