2014-12-13 88 views
-3

現在我將我的應用程序改編爲平板電腦。 I ask如何在屏幕旋轉時固定窗體。好人說,我必須調整我的應用程序的縱向方向,他們是正確的。在Delphi XE2中旋轉VCL組件

一些形式非常具體,它很難(可能不可能)重新設計他們的縱向。所以我認爲我可以創造一個幻想,我的應用程序只能在橫向模式下工作。

這就是爲什麼我需要旋轉Delphi XE2中的標準VCL組件。例如,對於標準備忘錄,我不僅需要從左到右(或從右到左)和從上到下(以及從下到上)寫文本。

另外我需要旋轉按鈕。現在我使用標準TButton和TRxSpeedButton。

  1. 我覺得足夠旋轉TButton的文本,但我不知道我該怎麼做到這一點?

  2. 對於TRxSpeedButton,我使用字形。理論上,我可以重寫畫布並更改圖片。另一種方法是創建2個按鈕(一個用於縱向方向,一個用於橫向,每個按鈕都有它們特殊的字形)並改變其可見性。但我不喜歡第二個變體,因爲在這種情況下exe文件將非常豐滿,我不喜歡豐滿的exe文件))

感謝您的建議。

+0

如果你真的要鎖定在橫向模式下您的應用程序,然後看看http://stackoverflow.com/questions/16093502/how-to-prevent-the-screen-from-automatically-rotating-on-一,平板電腦 – 2014-12-13 10:44:46

回答

-2

可能適用於您的一種方法是使用各種控件的PaintTo方法。讓他們將他們完全繪製的圖像繪製到位圖上,然後將位圖旋轉90度以獲得縱向和橫向效果。然後在OnPaint方法中將該圖像繪製在窗體的畫布上(在縱向模式下,您希望使實際控件不可見,只顯示您的繪製和旋轉位圖。)

有一些控件(如TRichEdit )但是其PaintTo方法無法正常工作。所以這可能對你的使用有限。另一種方法是在桌面上抓取窗體的整個客戶區的屏幕截圖,然後旋轉並顯示該窗口。即使與TRichEdit一起工作...

+0

這裏是一些偉大的圖像旋轉代碼的URL:[鏈接](http://stackoverflow.com/questions/848025/rotating-bitmaps-in-code) – 2014-12-13 06:56:58

+0

我才意識到,你也必須做的鼠標單擊人像模式定位,並將其發送到各種控件,這是一個嚴肅的工作,很難與編輯類型的控件。所以「這是無望的」評論可能是基於此。它可能仍然可行,但會涉及一些嚴肅的工作。您可以嘗試尋找支持旋轉的第三方vcl控件;我相信有幾個在那裏。 – 2014-12-13 08:25:50

+0

感謝建議。也許我會找到需要的第三方VCL控制,這將幫助我。 – 0xFF 2014-12-13 08:43:11

2

使用標準VCL控件進行此項工作並不現實。 VCL控件沒有允許它們旋轉90度的模式。我發現做任何顯示文字旋轉的控件都不容易。這只是文本輸出。怎麼樣的文字輸入?還有基於特定方向的陰影和3D效果問題。該名單繼續下去。

在我看來,如果你想使它工作的很好,你幾乎肯定需要從頭編寫一個完整的GUI框架。

雖然很明顯可以做到這一點,但在擱置使您的應用在縱向和橫向取向上都可行的備選方案時,似乎並不是一種現實的選擇。

0

你沒有假景觀的機會。

有您的問題三種解決方案:

  1. 最好的一個 - 與任何屏幕尺寸/方向組合應用程序的工作。這是Windows的方式。

  2. 如果您的應用程序「必須」在橫向模式下工作,當你發現方向錯誤通知用戶,該應用程序只能在橫向模式下的功能。無論是顯示消息框,或用特殊的消息形式也不容錯過,而你隱藏你的其他形式,或者類似的東西。

  3. 在橫向模式下鎖定設備,如How to prevent the screen from automatically rotating on a tablet?中所述但您應該知道,這不是Windows桌面模式下使用的方式。