回覆列表
  • 1 # 使用者883447994757

    好看的介面其實其他人也說了,需要一個好美工。除了美工,單以技術實現上來說,好看的介面都是畫出來的——其實現在比較主流的做法都是 DirectUI 自繪。以 Windows 舉例,就是給你建立一個 Windows 視窗,然後你自己掌控這個視窗的繪製、滑鼠事件、鍵盤響應等等。也就是說,基本上除了這個視窗之外其他的所有介面相關的渲染、操作等等,你的 DirectUI 庫都要做。仍然以 Windows 舉例,實現一個 DirectUI 框架,一般來說,有以下幾個要點:1、使用 CreateWindow 建立視窗 無邊框、無標題欄、WS_EX_LAYERED 等等;2、設計介面排布系統以及基礎的控制元件實現 View、TextView、Button、Layout、ScrollView 等;3、設計介面管理方式 比如你可以單純手寫(手工呼叫 layout.addView(view) 類似方法的方式),或者使用 XML 來排布介面。在這一步,你有一些手段來設定 View 的屬性——背景色、背景圖片、字型大小、字型顏色等等。4、使用其他渲染庫來繪製介面 將排布的 View 繪製出來(如標題欄、最小化/關閉按鈕、視窗內容、視窗邊框等等)。第三方渲染庫可以採用 Direct2D、Skia 等;5、將第 4 步渲染的結果貼到視窗上面 這裡你可能需要著重關注 WM_PAINT、::SetDIBitsToDevice、::UpdateLayeredWindow 這些訊息和 API。為保證效能,需要處理髒區域等等。6、結合 Windows 訊息機制,設計一套上層訊息&事件 框架 比如將滑鼠訊息分發給相應的 Window/View/Button 進行處理等等。這裡你需要處理類似 WM_MOUSE... 、WM_KEY...、WM_CHAR、WM_SIZE、WM_MOVING 等等訊息。一般做好上面幾步,你就可以得到一個可自繪、自定義標題欄、可控制大小、可接受滑鼠鍵盤輸入等等具備基本功能的 DirectUI 框架了。如果你要錦上添花的話,可以考慮實現下面的功能:

    自繪的選單;動畫;使用者自定義 View;類似基於 XML 的 UI Editor;主題切換;其實回答了這麼多,還是基於我在開發一款 DirectUI 庫過程中得到的經驗。我的 DirectUI 庫正在開發中,由於還沒徹底完成,還不能將程式碼同步到 Github 上。說不定後續完成後會將程式碼同步上去。GitHub - arnozhang/strawframework: Straw-Framework is a library for C++ GUI.

  • 2 # lanfengz2

    使用autohotkey指令碼的gui可以使用下面這種方式

    nomouse = 1

    Gui, +AlwaysOnTop -Caption +LastFound +Owner

    Gui, Cancel

    切換滑鼠穿透

    WinSet, ExStyle, ^0x20, ahk_id %ahk_id%

  • 中秋節和大豐收的關聯?
  • 形容女子思念遠方男子的詩句?