此代碼八九不離十工作:
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