[英]Java Splash Screen scale factor
Java似乎可以縮放作為jvm開關傳遞的啟動屏幕,例如
java -splash:splash_file.png
取決於顯示器的尺寸。
在來源上,我可以看到對某些本地計算的比例因子的引用。 有人知道該比例因子是如何計算的嗎?
我假設它是通過圖形的標准方法計算的,該方法在無界的“世界”(世界坐標)中獲取給定大小的圖像,將其轉換為歸一化的設備(認為單位平方),然后再次將其轉換為屏幕坐標。 轉換包括點的平移和縮放。
給定初始屏幕的世界窗口(在沒有平移或縮放的情況下其顯示方式),可以按以下方式獲得標准化的(x,y)值:
第一部分是平移,第二部分是比例因子。 這樣可以減少圖像包含在1 x 1的正方形中,因此所有(x,y)值都是分數。
要從歸一化坐標系轉換為屏幕坐標系,請按以下方式計算值:
這些操作通常在轉換和縮放矩陣乘法的幫助下有效完成。 也可以旋轉。
這實際上是一個底層視圖,顯示了如何拍攝自己喜歡的圖像,形狀等,並在所有尺寸的屏幕上一致地呈現它們。 我不確定在您給出的示例中它是如何完成的,但可能會有所不同。 請參閱本演示文稿的開頭以直觀表示。
該值實際上既取決於jdk實現,也取決於體系結構。
我瀏覽了OpenJDK代碼 ,對於許多體系結構,它都被簡單地硬編碼為1。
例如,在Windows綁定中,您將找到:
SPLASHEXPORT char*
SplashGetScaledImageName(const char* jarName, const char* fileName,
float *scaleFactor)
{
*scaleFactor = 1;
return NULL;
}
然后將scaleFactor值存儲到通過_GetScaleFactor方法通過JNI訪問的結構中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.