|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我有个同学,他是搞Java的,他给我说“Java不是效率低,而是速度慢。”,我不是搞Java的,我实在想不透这句话的含义,难道执行速度不就是效率低吗?难道执行速度慢还成效率高了?菜单|右键 本人做出VS.NET作风的右键菜单(复杂,有用)
此主题相干图片以下:classMyMenuItem:System.Windows.Forms.MenuItem
{
publicMyMenuItem()
{
//这里很主要,必需把OwerDraw设为true,如许能够本人画菜单,不然即是让操纵体系画菜单了,默许的是false
this.OwnerDraw=true;
}
protectedoverridevoidOnDrawItem(SysDrawItemEventArgse)
{
//要重画菜单,是没有OnPaint办法重载的,只要重载OnDrawItem办法!
Graphicsg=e.Graphics;
g.SmoothingMode=SmoothingMode.AntiAlias;//抗锯齿
Fontf=newFont(FontFamily.GenericSerif,12,FontStyle.Regular,GraphicsUnit.Pixel);//设定菜单的字体
Penp=newPen(Color.Navy,1);//这是画边框的字体
if(e.State==DrawItemState.NoAccelerator)//一入手下手右键单击呈现菜单,可是鼠标并没有移上往
{//用红色的底色
g.FillRectangle(Brushes.WhiteSmoke,e.Bounds.X-2,e.Bounds.Y-2,121,23);
}
//鼠标移上往,可是并没有单击
if((e.State&DrawItemState.Selected)==DrawItemState.Selected)
{
//花边框和底色
g.FillRectangle(Brushes.LightSteelBlue,e.Bounds.X,e.Bounds.Y,109,20);
g.DrawLine(p,e.Bounds.X,e.Bounds.Y,e.Bounds.X,e.Bounds.Y+19);
g.DrawLine(p,e.Bounds.X,e.Bounds.Y+19,e.Bounds.X+109,e.Bounds.Y+19);
g.DrawLine(p,e.Bounds.X+109,e.Bounds.Y+19,e.Bounds.X+109,e.Bounds.Y);
g.DrawLine(p,e.Bounds.X+109,e.Bounds.Y,e.Bounds.X,e.Bounds.Y);
}
//显现笔墨
g.DrawString(this.Text,f,Brushes.Black,e.Bounds.X,e.Bounds.Y);
g.Dispose();
}
//这是很主要的,这给你的菜单界说了巨细,高20,宽100,不然你的菜单甚么也看不到
protectedoverridevoidOnMeasureItem(MeasureItemEventArgse)
{
e.ItemHeight=20;
e.ItemWidth=100;
}
}
申明:这里我没有画按钮按下时的模样(懒:),次要是今后进一步改善),固然也没有绘图标,也是为了今后改善,这只是一个开端的形状,人人看看有甚么更高的办法?!
前天傍晚我发表了《Java的跨平台就是一句谎言。》,原本就是周末闲来无事,发表一篇略带争议性的博文让大家都来吵吵架,发表自己的看法,根本就没想着谁把谁打倒,一个行业或者是技术阵营是无法用短期口水仗打到对手的。 |
|