我正在嘗試使用SetBounds()in的多載函式,作為引數FMX.Forms傳遞。Screen.Displays[index].BoundsRect但是,由于 Delphi 11BoundsRect似乎回傳 aTRectF而不是TRect.
我正在尋找一種將其轉換為 a 的方法,TRectF以便TRect我可以將其傳遞給SetBounds().
uj5u.com熱心網友回復:
@SilverWarior 的回答(以及@AndreasRejbrand 對它的評論)解釋了如何轉換TRectF為,TRect以便您可以將其與TForm.SetBounds()方法(或TForm.Bounds屬性)一起使用。
我只想提一下,隨著TDisplay.BoundsRect從TRectto的變化TRectF,Delphi 11 還引入了一個新TForm.SetBoundsF()方法和一個新TForm.BoundsF屬性,它們都采用浮點坐標 viaTRectF而不是整數坐標 via TRect。
因此,您根本不需要將坐標從浮點數轉換為整數。您只需要更新您的代碼邏輯以呼叫不同的方法/屬性,例如:
預 D11:
MyForm.Bounds := Screen.Displays[index].BoundsRect;
or
MyForm.SetBounds(Screen.Displays[index].BoundsRect);
D11 后:
MyForm.BoundsF := Screen.Displays[index].BoundsRect;
or
MyForm.SetBoundsF(Screen.Displays[index].BoundsRect);
uj5u.com熱心網友回復:
TRect和之間的唯一區別TRectF是TRect將其坐標存盤為整數值,而TRectF將其坐標存盤為浮點值。因此,您所要做的就是通過執行以下操作將存盤的浮點值轉換TRectF為整數:
Rect.Left := Round(RectF.Left);
Rect.Right := Round(RectF.Right);
Rect.Top := Round(RectF.Top);
Rect.Bottom := Round(RectF.Bottom);
注意:根據您的情況,您可能希望使用System.Math單元中可用的其他兩種舍入方法:Floor()或Ceil().
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/484335.html
標籤:德尔福 火猴 矩形 delphi-11-亚历山大
