WinFormsにToolStripアイテムの形状を変更する方法はありますか?それがパネルの場合は、RegionをGraphicPathオブジェクトに設定できます。しかし、ToolStripItemでは、Controlから派生したものではないので、これを行う方法はわかりません。 alt text http://store.ezburn.com/images/productimages/toolstripbuttonshapes.jpgToolStripItemのRegionに相当する値を設定する方法
答えて
ToolStripRendererを作成し、コードにペイントボタンを作成する必要があります。このようなアプローチでは、あらゆる形状をシミュレートすることができます。
カスタムレンダラが完了したら、レンダラをツールストリップに割り当てて、そのレンダラを割り当てる必要があります。
カスタムレンダラの作成を記述するarticle。
更新:this articleをチェックすることもできます。これはあなたの仕事に役立ちます。
私はアービターのポストで2番目のリンクを見た後でこれが可能だと思いますが、私は私の解決策を維持します。締め切りのために時間が不足しているので、コントロールのタイプをプレーンなボタンに変更しました。ここではリージョンを設定し、シェブロンパスと呼ぶリージョンに設定することで必要なルックを再現することができました。上の2つのボタンは、Windows.Forms.Buttonから派生し、カスタムペイントとリージョンが設定されています。下の2つのボタンは、カスタムレンダラとカスタムペイントを備えたツールストリップボタンです。
alt text http://store.ezburn.com/images/productimages/toolstripbuttonshapes-final.jpg
これは誰にも参考になるかどうかはわかりません。しかし、ここに地域を設定するためのコードがあります:
Private Sub setRegion()
Dim r As Rectangle = ClientRectangle
Me.Region = New Region(getChevronPath(r.X, r.Y, r.Width, r.Height))
End Sub
Private Function getChevronPath(ByVal X As Single, ByVal Y As Single, _
ByVal width As Single, ByVal height As Single) As GraphicsPath
Dim w As Integer = Convert.ToInt32(X + width - ChevronHeight)
Dim hh As Integer = Convert.ToInt32(height/2)
Dim gp As New GraphicsPath()
'top
gp.AddLine(X, Y, w, Y)
'arrowtop, on the right
gp.AddLine(w, Y, w + ChevronHeight, hh)
'arrowbottom, on the right
gp.AddLine(w + ChevronHeight, hh, w, Y + height)
'bottom
gp.AddLine(w, Y + height, X, Y + height)
If EndButton Then
'left
gp.AddLine(X, Y + height, X, Y)
Else
'arrowbottom, on the left
gp.AddLine(X, Y + height, ChevronHeight, hh)
'arrowtop on the left
gp.AddLine(ChevronHeight, hh, X, Y)
End If
gp.CloseFigure()
Return gp
End Function
これは、小さなコントロールをオーバーラップさせて(リージョンを使わずに)簡単に行うことができます。どちらもボタンやツールストリップアイテムで。もちろん、矢印の上下にある小さな三角形は上部ボタンに属しますが、これは大部分のユーザーにとって大きな問題ではありません。 – arbiter
ああ、すでに重複しているのが分かります。とにかく小さなツールストリップボタンが重なると、同じ視覚的外観が得られます。 – arbiter
こんにちは 同じ外観です - ボタンが押され、重なりがはっきりと見えるようになるまで。 :-( – bperreault
- 1. WeakHashMapに相当する値を設定しますか?
- 2. AWS S3 Regionを設定する
- 3. パンダの相関サブクエリに相当する方法
- 4. Selenium 2 chromeドライバの環境設定RubyBindingsに相当するJava
- 5. フォームに値を設定する方法
- 6. データベースファイルへの相対パスをweb.configに設定する方法は?
- 7. aws cliコマンドで--regionを設定するには?
- 8. gradでMaven相当のリポジトリを設定する
- 9. API呼び出しに相当するYAML設定
- 10. voidの値を設定する方法**
- 11. Install4jでは、varfileに相対パスを設定する方法は?
- 12. FOPでregion-beforeとregion-bodyの間の相対空間xslt
- 13. Websphereのlog4j.propertiesファイルの相対パスを設定する方法
- 14. はCodeIgniterの中に設定値の関数で値を設定する方法
- 15. VS2010の相対パスを設定する方法
- 16. HTMLページの相対Webパスを設定する方法
- 17. antスクリプトの相対パスをスペーシングで設定する方法は?
- 18. 実行スクリプトへの相対パスを設定する方法
- 19. FabricJsの相対位置(oCoords)を設定する方法は?
- 20. socket.io:値を設定する方法
- 21. ポリマーの式を評価する方法(PHPの "eval"に相当)
- 22. カウンタの値を列の値に設定する方法
- 23. 配列の値を ";"に設定する方法別の値
- 24. JavaドライバでMongoDbの$相当の値が設定されている
- 25. CSV設定で各ユーザに値のセットを割り当てる方法
- 26. すべての定義済みMSBuild変数をリストする - 相当する値
- 27. Homestead迷惑メールボックスで相対パスを設定する方法
- 28. Perlの$に相当する$ _
- 29. NLS_DATE_FORMATに相当する赤方偏移
- 30. .NETの#region /#endregionに似たコードを整理する方法は?
こんにちは、ありがとう。私はすでにこれをしている。ボタンの形状は異なるように描くことができますが、ツールストリップ上では、常に矩形領域を占めます。私は現在のイメージを提供するために上記で編集します。 – bperreault
こんにちは 2番目のリンクをありがとう、面白いです。私はそれがどのようにできるかを見ます。 – bperreault