11

私は、ToolStrip (GripStyle: Hidden、Dock: Top、RenderMode: ManagerRenderMode) を備えたかなり標準的な MainForm がある Windows Form アプリ (C#、.NET 4.0、VS 2010) に取り組んでいます。ツールストリップには、いくつかの基本的な項目 (ToolStripLabel、ToolStripSeparator、ToolStripSplitButton) が含まれています。

これは次のようにレンダリングされます。

デフォルトでレンダリングされる ToolStrip ManagerRenderMode

最初は単にツールストリップの下に「下」の境界線を追加したかったのですが、このツールストリップが「丸みを帯びた角」でレンダリングされていることにも気付きました (画像の右上と下の境界線を確認できます)。グラデーションの縦線。

これらの角を丸くしないようにするにはどうすればよいですか?

私は試した:

public class MainFormToolStripRenderer : ToolStripProfessionalRenderer
{
    protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
    {
        base.OnRenderToolStripBorder(e);

        var y = e.ToolStrip.Height-1;
        e.Graphics.DrawLine(new Pen(SystemColors.ControlDark, 1), new Point(0, y), new Point(e.ToolStrip.Width, y));
    }

this.toolStrip_Actions.Renderer=new MainFormToolStripRenderer();そして、フォームの初期化で配線しました。

これにより、下の境界線が得られましたが、丸みを帯びた角には何もしませんでした。また、下の境界線を追加すると、丸みを帯びた角がより目立ちます。

カスタム ToolStripProfessionalRenderer によってレンダリングされた ToolStrip

次に、上記と同じイベント ハンドラーで四角形を描画してみました。(少なくとも) 丸みを帯びた角と垂直方向のグラデーションを、実線の四角形の境界線の後ろに隠そうとしました。使用可能な描画領域 (e.AffectedBounds) が丸い境界線内にあるため、これは機能しませんでした。

また、ToolStrip の RenderMode を System に設定しようとしました (レンダラーは使用しません)。この場合、ツールストリップの角はぴったりと合う (長方形) ように見えますが、ツールバー内の分割ボタンが壊れているように見えます (下向き矢印をクリックしてもドロップダウンが表示されません)。 -感触は少し圧倒されます(ツールストリップのいくつかのボタンにカーソルを合わせるまでは、かなりフラットです).

最終的には、ManageeRenderedMode、または Professional レンダラーから継承したカスタム レンダラーに固執したいと思いますが、丸みを帯びた角を取り除く必要があります。とりわけ、私が見ているものに近いと思われるこの SO Qを見つけましたが、私のケースに対する答えは得られませんでした。

前もって感謝します

4

3 に答える 3

11

レンダラー クラスでこれを試してください。

public class MainFormToolStripRenderer : ToolStripProfessionalRenderer {

  public MainFormToolStripRenderer() {
    this.RoundedEdges = false;
  }
}
于 2012-11-16T14:44:22.717 に答える