私はこの場合数週間前にいましたが、この質問には答えがないので、これが4年後の私の解決策です:
多くの場合、このソリューションを使用して ToolStripButton を再描画しています:無効、チェック済み、選択済み
- OnPaint イベントをオーバーライドするか、ToolStrip のレンダラーを変更します
- この方法で灰色のフィルターを使用せずに画像を描画します。ボタンの画像とボタンの画像の位置を設定するだけです: http://msdn.microsoft.com/en-us/library/chas0s9c(v=vs.110).aspx
私を助けた2つの良い例:
ツールストリップ クラス:
ToolStrip ts = new ToolStrip();
//[...]
ts.RenderMode = ToolStripRenderMode.Professional; //Professional is just an example
ts.Renderer = new CustomRenderer();
CustomRenderer クラス:
public class CustomRenderer: ToolStripProfessionalRenderer
{
protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e)
{
if (!e.Item.Enabled) //in this case you will just have the image in your button, you need to add text etc in this if
{
//to draw the image
Graphics g = e.Graphics;
g.DrawImageUnscaled(e.Item.Image, new Point(2, 2)); //you need to specify the correct position
}
else //other cases
base.OnRenderButtonBackground(e);
}
}
問題は、 ToolStripButton 内のすべての要素の正しい位置を知ることです。そのため、すべての場合に ToolStripButton を描画しました