All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
使用div仿javascript模态窗口_JavaScript技术_编程技术
自己在做项目过程中学到的PHP知识收集_php资料_编程技术
c#的DateTime.Now函数详解_[Asp.Net教程]
C#.net,控制Windows,Messenger和Windows,Live,Messenger_[Asp.Net教程]
实例分析学习动态网页制作技术PHP开发投票系统_php资料_编程技术
SQL,Server之分布式事务_mssql学习_编程技术
javascript,编写的文字放大效果_JavaScript技术_编程技术
ASP.NET利用RAR实现文件压缩解压缩_.net资料_编程技术
Asp.Net,Ajax,学习笔记16,Profile,Service扩展方式_[Asp.Net教程]
利用XSLT来换XML的根_[XML教程]
Reading number is top 10 pictures
Send some Valentine's day cartoon
girl of HuNan name is LiXiang(湖南辣姐李湘的写真)
再发两张抽象画
Summer is most suitable for young people to travel in China8
Absolutely shocked. National geographic 50 animal photographys8
如果没有好报,为什么要做好人?
奇趣的世界记录3
贩卖儿童者必须判死刑
程序员的悲哀
Female model behind the bitterness, often being overcharged4
Download software ranking
Sora aoi, the maid, students' uniforms
jBuilder2006
电车之狼R
Proficient in Eclipse
C语言教程TXT
虚拟机5.5.3版
Boxer vs Yellow1
Proficient in JavaScript
艳兽都市
WebService在.NET中的实战应用教学视频 → 第2集
aaa published in(发表于) 2014/7/19 0:09:40 Edit(编辑)
delphi像“开始”菜单一样漂亮的菜单项实例

delphi像“开始”菜单一样漂亮的菜单项实例

delphi像“开始”菜单一样漂亮的菜单项实例

像“开始”菜单一样漂亮的菜单

实例说明

Windows的开始菜单非常独特,在菜单的旁边有一条竖着的彩条,彩条中还写着文字。这种独特的菜单能够使程序的界面看起来更加漂亮。本例就实现了这种菜单,运行本例弹出“我的菜单”。就会看到菜单的左边有一个蓝色的彩条,彩条上面还写着文字。例效果如图1.4所示。



图1.4像“开始”菜单一样漂亮的菜单

技术要点

当菜单的菜单项需要重绘时会触发OnAdvancedDrawItem事件,并且使用该事件的过程对菜单项进行重绘,但是主菜单的OwnerDraw属性为True时,该事件才会起作用。在OnAdvancedDrawItem事件处理过程中先将一幅大小合适的图片绘制到菜单的左面,然后将每个菜单的标题写到菜单对应的菜单项上,最后在左面图片上写入“我的菜单”4个字。向菜单上写入文字可以通过DrewText函数,该函数声明如下:

function DrewText(hDC:HDC;IpString:PChar;nCount:Integer;var IpRect:TRect;uFormat:UINT):Integer;stdcall;

参数说明:

hDC 设备场景句柄。

Ipstring输出的文字。

nCount 输出文字的字数。

IpRect 输出文字的区域。

uFormat 文字输出的样式,器常用可以选值如表1.1所示。



表1.1 uFormat参数的可选值

实现过程:

1.新建一个标准工程,创建一个新窗体,默认主窗体的Name属性为For1。

2.在窗体中添加TMainMenu和TImage组件。

3.设置TImage组件的Alig属性为alClient,设置Stretch属性为True。

4.程序代码如下:

在窗口单元中的private域中添加位图对象:

procedure TForm1.FormCreate(Sender: TObject);

begin

Mbitmap:=Tbitmap.Create;

mbitmap.LoadFromFile('2.bmp');

end;


procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

mbitmap.Free;

end;


procedure TForm1.N4AdvancedDrawItem(Sender: TObject; ACanvas: TCanvas;

ARect: TRect; State: TOwnerDrawState);

var

Mrect:Trect;

begin

acanvas.TextWidth(TMenuItem(Sender).Caption);

mrect:= rect(0,0,mbitmap.Width,mbitmap.Height);

acanvas.Draw(arect.Left,arect.Top-arect.Bottom,mbitmap);

acanvas.TextRect(rect(arect.Left+mbitmap.Width+2,arect.Top,arect.Right,arect.Bottom),arect.Left+mbitmap.Width+2,arect.Top+3,TMenuItem(Sender).Caption);

setbkmode(acanvas.Handle,TRANSPARENT);

DrawText(acanvas.Handle,'我'+#13+'的'+#13+'菜'+#13+'单',-1,mrect,DT_LEFT+DT_Center);

end;




添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.