大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 程序开发 -> 软件界面中菜单的美化

软件界面中菜单的美化

时间: 2021-07-31 作者:daque

在网上有很多作品都提到还好吗在菜单中介入后台图片,然而都没有一个完备的回复,也没有一个比拟完备的例子。固然csdn已经有一个高人说过这个题目,并且在步调员大学本科营2000版中也有保藏。我参考了少许本领和本领,固然囊括海外的了,写下了如次的代码,蓄意不妨满意大师的诉求,然而不是很完备,即使有哪位大侠窜改过,无妨也将窜改过的代码贴出来,大师共享!为了在menu控件中介入后台图片,没有径直的本领,都的靠本人发端画,由于menu控件没有canvas属性,以是只能本人发端了!这个货色我也是菜鸟一只,说不出什么高超的货色,即使有什么题目不妨发信给我,咱们共通商量:cqwty@sina.com,源代码如次:unit fmain;interfaceuses  windows,  graphics,  forms,  menus,  classes;type  tfrmmain = class(tform)    mnupopup: tpopupmenu;    mainmenu1: tmainmenu;    sdfsdf1: tmenuitem;    sdfsdf2: tmenuitem;    dfgdfg1: tmenuitem;    dfgdfg2: tmenuitem;    n1: tmenuitem;    werwer1: tmenuitem;    procedure drawmenu(sender: tobject; acanvas: tcanvas; arect: trect; state: townerdrawstate);    procedure measuremenu(sender: tobject; acanvas: tcanvas; var width, height: integer);    procedure formcreate(sender: tobject);    procedure formclose(sender: tobject; var action: tcloseaction);  end;var  frmmain: tfrmmain;  bmp1:tbitmap;implementation{$r *.dfm}procedure tfrmmain.drawmenu(sender: tobject; acanvas: tcanvas; arect: trect; state: townerdrawstate);var  ctemp:  tcanvas;  stext:  string;  mwnd:   hwnd;  rmenu:  trect;begin  acanvas.brushcopy(arect, bmp1, arect, clblack);  acanvas.brush.style := bsclear;  stext := tmenuitem(sender).caption;  acanvas.font.color:=clred;  with acanvas do begin      if odselected in state then begin      pen.style:=psinsideframe;      brush.color := rgb(110, 131, 184);      pen.color   := rgb(47, 60, 93);      rectangle(arect);      end;    if stext = '-' then begin      // draw line      acanvas.pen.color := rgb(0, 0, 0);      moveto(arect.left, arect.top + ((arect.bottom - arect.top) div 2));      lineto(arect.right, arect.top + ((arect.bottom - arect.top) div 2));    end else begin      // draw text      inc(arect.left, 12);      drawtext(handle, pchar(stext), length(stext), arect, dt_left or dt_vcenter or dt_singleline);    end;  end;  // 画边框的,功效是平面包车型的士  mwnd := windowfromdc(acanvas.handle);  if mwnd <> self.handle then begin    ctemp := tcanvas.create();    ctemp.handle := getdc(0);    windows.getwindowrect(mwnd, rmenu);    ctemp.brush.color := rgb(120, 120, 120);    ctemp.framerect(rmenu);    inflaterect(rmenu, -1, -1);    ctemp.brush.color := rgb(240, 240, 240);    ctemp.framerect(rmenu);    inflaterect(rmenu, -1, -1);    ctemp.framerect(rmenu);    releasedc(0, ctemp.handle);    ctemp.free();  end;end;procedure tfrmmain.measuremenu(sender: tobject; acanvas: tcanvas; var width, height: integer);begin  inc(width,50);//安排菜单的宽窄  inc(height,15);//安排每一个item的莫大,这一句不妨不要,运用默许值end;procedure tfrmmain.formcreate(sender: tobject);begin bmp1:=tbitmap.create; bmp1.loadfromfile('e:\aaa.bmp');end;procedure tfrmmain.formclose(sender: tobject; var action: tcloseaction);beginbmp1.free;end;end.

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.