帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:Generator  


Sample Image - RGNCreator.gif

<--文章啟動 --> !

這裡程序的目的是允許你創建非矩形對話框。 程序本身就是一個例子,如果這一點太遠的話,會發生什麼。

創建透明區域

  • 為對話框創建遮罩圖像。 一種顏色將是對話框的透明部分。 透明gif是一種很好的方法,但支持許多圖像格式。
  • 運行 RGNerator。
  • 輸入掩碼的文件名。 ( 一旦輸入了有效的圖像文件名,就會自動載入),如果你不能記住它的名字或者位置。
  • 輸入表示對話框的透明部分的顏色。 如果你不知道確切的RGB顏色按下拾取按鈕。

選取透明顏色

  • 將游標移到透明顏色上方。 右邊有兩個顏色框。 頂部是當前透明色,底部是游標超過的像素的顏色。 當頂色框包含透明顏色- 右鍵單擊滑鼠。
  • 如果很難選擇像素,可以縮放圖像。
  • 如果圖像對於查看區域來說太大,則不能使用滾動條- 或者只需按住滑鼠左鍵並將圖像拖動到所需位置即可。
  • 當你選擇了顏色 press OK。
  • 按創建按鈕。所需的時間取決於透明區域的複雜性。
  • 完成後,將要求你輸入要存儲rgn數據的文件的名稱。

如何使用透明區域

我已經包含了一個演示項目。 請先看看這個,因為它會告訴你這是多麼簡單。

在你自己的應用中使用它

  • 將rgn文件作為"rgn"資源插入。
  • 插入要用作背景的點陣圖。
  • 插入對話框
  • 將對話框屬性的邊框設置為無。
  • 在對話框中插入圖片對象
  • 將它的類型設置為bitmap點陣圖""
  • 將背景點陣圖設置為圖像。
  • ( 這有點煩人,因為它必須是tab順序中的第一個。 否則,當對話框顯示時,它將覆蓋其他對話框控制項。 不幸的是,它在編輯對話框時 ! 所以只要你完成了對話框,就將它設置為第一個
  • 從模板創建對話框。
  • 基於CRGNDlg類的對話框。
  • 從演示項目中獲取 rgndlg.cpp 和. h 文件。
  • 在對話框源代碼中:
    在構造函數中只添加RGN資源 id。
    我叫 e.g CRGNDlg(CRgnDemoDlg::IDD,pParent,"BACKGROUND")

便箋

  • 在調用基InitDialog函數之前,必須先完成 SetWindowRgn
  • 你不能使用 SetWindowRgn -it中使用的rgn,它屬於 Windows - 甚至不刪除它。
  • 如果大綱拖動緩慢,則使用完全反轉。 它不那麼好,但對於複雜區域來說速度更快。 它在 rgndlg.cpp.的Inverttracker函數中
  • 你的圖像邊緣應該是暗灰色的。 如果背景是反向顏色,而灰色邊緣顯示為背景色,則非常黑或者非常白色。

"小型字體"還有"大字體"

這個問題:

例如你的桌面顯示配置中選擇了"小型字體"。 你高興創建對話框,放入bmp並插入所有必需的控制項,以便將它們仔細地與背景bmp對齊。 然後你成功地發送了你的應用程序,然後讓人們抱怨事情沒有排隊。

原因:

這些人選擇了'大字體'。 Windows 根據字體縮放對話框及其控制項。 字體依賴於'小型/大型'字體設置- 所以is字體 8不是同一個'大小'。 由於圖像和rgn是基於像素的,所以存在問題。

解決方案:

有兩種可能的解決方案-

1.縮放

這是我在演示應用中實現的。 縮放的缺點是它不精確。 從"小型字體"設計的應用程序中 比如 縮放有點小,如果擴展為"大字體"的話。

( 在演示應用中查看 rgndlg.cppInitDialog 函數)。

2.有兩個獨立的圖像和兩個RGN文件。

設計對話框,然後基於原始的兩個對話框,設置一個大圖像,一個使用較小的圖像。 確定字體模式的"可靠"方式是: if (dc.GetDeviceCaps(LOGPIXELSX) == 120) 然後它的大,或者它的小( dc.GetDeviceCaps(LOGPIXELSX)==96 )

版權

本程序提供了數據動態。 你可以隨意複製並分發給任何人。



文章标签:Generator  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语