此代码八九不离十工作:
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
menuStrip1.Renderer = new MyRenderer();
}
private class MyRenderer : ToolStripProfessionalRenderer {
protected override void OnRenderItemImage(ToolStripItemImageRenderEventArgs e) {
Console.WriteLine("{0}: {1} <= {2}", e.Item.Name, e.ImageRectangle, e.Image.Size);
if (e.Item is ToolStripMenuItem) {
int x = e.ImageRectangle.Left + 20 - e.Image.Width;
e.Graphics.DrawImage(e.Image, new Point(x, 0));
}
else base.OnRenderItemImage(e);
}
}
}
最终的问题是,菜单项的布局进行计算和内部。您无法找到图像结尾和文本开始的位置。 OnRenderItemImage()可悲地被称为没有任何提示图像区域有多宽。那里设计的一点点。
这是在WinForms或WPF中? – 2010-03-30 15:19:53
它是WinForms。 – Oberon 2010-03-30 15:30:34