軟體介面中選單的美化 (轉)
在網上有很多文章都提到怎樣在選單中加入背景圖片,可是都沒有一個完整的回答,也沒有一個比較完整的例子。當然csdn曾經有一個高人說過這個問題,而且在員大本營2000版中也有收藏。我參考了一些方法和技巧,當然包括國外的了,寫下了如下的程式碼,希望能夠滿足大家的要求,不過不是很完善,如果有哪位大俠修改過,不妨也將修改過的程式碼貼出來,大家共享!為了在menu中加入背景圖片,沒有直接的方法,都的靠自己動手畫,因為menu控制元件沒有canvas屬性,所以只能自己動手了!這個東西我也是菜鳥一隻,說不出什麼高深的東西,如果有什麼問題可以發信給我,我們共同探討:to:cqwty@sina.com">cqwty@sina.com,如下:
unit FMain;
interface
uses
, 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: T; 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 oded in State then begin
pen.Style:=psInsFrame;
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));
Lo(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);
begin
bmp1.Free;
end;
end.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993621/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 全新的智慧人像美化軟體
- 程式設計之路-介面美化 (轉)程式設計
- jQuery 美化select下拉選單jQuery
- 單選按鈕美化效果程式碼
- 規範設計Windows應用軟體選單 (轉)Windows
- radio單選按鈕美化效果
- 共享軟體中註冊部分的簡單實現(轉)
- 軟體開發中的矛盾——一個簡單的例子 (轉)
- select下拉選單美化程式碼例項
- 精選的 Go 框架,庫和軟體的精選清單Go框架
- 軟體的效能設計(一)介面設計對軟體效能的影響 (轉)
- CSS3 美化radio單選按鈕CSSS3
- jQuery美化select下拉選單程式碼例項jQuery
- Bartender 3 for Mac選單欄整理軟體Mac
- Dato for Mac選單欄時鐘軟體Mac
- Mac選單欄時鐘軟體:DatoMac
- Dato for Mac(選單欄時鐘軟體)Mac
- 選單欄時鐘軟體:Dato for MacMac
- 將RAC軟體轉換為單例項軟體單例
- 選單欄美化的好幫手Boring Old Menu Bar for MacMac
- JS列表的下拉選單元件(仿美化控制元件select)JS控制元件
- Boring Old Menu Bar for Mac(選單欄美化工具)Mac
- CSS3 radio單選按鈕美化效果CSSS3
- javascript模擬美化select下拉選單效果詳解JavaScript
- 模擬美化select下拉選單程式碼例項
- 核心編譯選單中相關選項的意義(轉)編譯
- 套介面選項(轉)
- 對軟體行業的簡單認識 (轉)行業
- 選單(轉)
- 從資料庫中動態選取下拉選單的方法 (轉)資料庫
- ERP軟體廠商如何選代理(轉)
- 軟體設計中的可用性 (轉)
- 軟體開發中的專案管理(轉)專案管理
- 軟體專案管理中的“敏捷流程”(轉)專案管理敏捷
- Bartender 5 for Mac:選單欄圖示管理軟體Mac
- Bartender 4 for Mac 選單欄應用管理軟體Mac
- Mac選單欄應用管理軟體:Bartender 4Mac
- 選單欄應用管理軟體-Bartender 4 MacMac