軟體介面中選單的美化 (轉)
在網上有很多文章都提到怎樣在選單中加入背景圖片,可是都沒有一個完整的回答,也沒有一個比較完整的例子。當然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
- 全新的智慧人像美化軟體
- CSS3 美化radio單選按鈕CSSS3
- 精選的 Go 框架,庫和軟體的精選清單Go框架
- 將RAC軟體轉換為單例項軟體單例
- 選單欄美化的好幫手Boring Old Menu Bar for MacMac
- 新機必備軟體清單:精選軟體工具
- Boring Old Menu Bar for Mac(選單欄美化工具)Mac
- 選單欄時鐘軟體:Dato for MacMac
- Bartender 3 for Mac選單欄整理軟體Mac
- Mac選單欄時鐘軟體:DatoMac
- Dato for Mac(選單欄時鐘軟體)Mac
- Dato for Mac選單欄時鐘軟體Mac
- 優秀的選單欄日曆軟體:InstaCal mac版Mac
- Bartender 5 for Mac:選單欄圖示管理軟體Mac
- Mac選單欄應用管理軟體:Bartender 4Mac
- 選單欄應用管理軟體-Bartender 4 MacMac
- Bartender 4 for Mac 選單欄應用管理軟體Mac
- Bartender 4 for Mac選單欄應用管理軟體Mac
- Windows Terminal 簡單美化Windows
- Mac上好用的選單欄應用管理軟體:Bartender 4Mac
- 開啟系統介面/軟體介面
- Windows開始選單欄軟體:DoYourData Start Menu for MacWindowsMac
- Win10系統刪除右鍵選單“使用看圖王美化圖片”選項的方法Win10
- 談談Spring中的BeanPostProcessor介面(轉)SpringBean
- CSS3 checkbox核取方塊和radio單選框美化效果CSSS3
- jQuery和css3超讚select下拉選單框美化外掛jQueryCSSS3
- [Go語言寫介面]二、簡單美化視窗,設定視窗圖示,簡單美化資訊框,建立按鈕和註冊事件Go事件
- 關於軟體驗證中的單元測試
- winform之在主窗體中不顯示子窗體的選單欄ORM
- 直播軟體app開發,Android Studio中的介面上下滑動APPAndroid
- 選擇select下拉選單網頁跳轉網頁
- 簡單實用的Mac影片轉換軟體:UniConverter mac中文版Mac
- Laravel8中介軟體組的簡單使用Laravel
- 金蝶雲星空——過濾介面文字框彈出選單介面
- 對標印度的PostMan,一款中國介面測試軟體的崛起Postman
- 轉換軟體有哪些好用的?
- 半導體產業“去美化”或“去中國化”?產業
- 選擇好的軟體,就是要選好的服務