2011-09-05 134 views
9

如何獲得像素的屏幕分辨率(高度,寬度)?如何獲得屏幕分辨率R

+2

哪個屏幕?我有兩個。 –

+1

更有用的問題是爲什麼;是像Tk或其他圖形用戶界面的東西? – mbq

+0

@mbq gvisMotionChart需要它生成的圖表的寬度和高度。所以我想我可以根據用戶的屏幕分辨率來改變這些參數。 –

回答

10

你可以使用commad行界面來WMI

> system("wmic desktopmonitor get screenheight") 
ScreenHeight 
900 

你可以捕捉結果與system

(scr_width <- system("wmic desktopmonitor get screenwidth", intern=TRUE)) 
# [1] "ScreenWidth \r" "1440   \r" "\r" 
(scr_height <- system("wmic desktopmonitor get screenheight", intern=TRUE)) 
# [1] "ScreenHeight \r" "900   \r" "\r" 

使用多個屏幕,輸出是,例如,

[1] "ScreenWidth \r" "1600   \r" "1600   \r" "" 

我們希望所有,但第一個和最後一個值,轉換爲接受的答案在Windows 8和更高版本不起作用號

as.numeric(c(
    scr_width[-c(1, length(scr_width))], 
    scr_height[-c(1, length(scr_height))] 
)) 
# [1] 1440 900 
+0

系統錯誤(「wmic desktopmonitor get screenwidth」,intern = TRUE):'wmic'找不到。 我需要安裝一些東西嗎? –

+0

@ gd047 wmic肯定可用於Windows專業版(XP/7)。我知道它在XP Home上缺失,但我不知道它可以安裝。 – Marek

+0

它不在路上! –

1

在Windows上,您可以撥打GetSystemMetrics並通過SM_CXSCREENSM_CYSCREEN。這將返回主顯示器屏幕的寬度/高度,以像素爲單位。

DWORD dwWidth = GetSystemMetrics(SM_CXSCREEN); 
DWORD dwHeight = GetSystemMetrics(SM_CYSCREEN); 
+1

我相信海報正在從R語言而不是C++來做這件事。 –

+1

@David Hefferman對不起,對不起,無論如何,我發現這[鏈接](http://www.nceas.ucsb.edu/scicomp/usecases/CreateRPackageWithC)也許幫助 – Arash

4

這很容易使用JavaScript:你只是做

window.screen.height 
window.screen.width 

可以來自R使用SpiderMonkey包從OmegaHat調用JavaScript。


solve this with Java可以,使用rJava包進行訪問。

library(rJava) 
.jinit() 
toolkit <- J("java.awt.Toolkit") 
default_toolkit <- .jrcall(toolkit, "getDefaultToolkit") 
dim <- .jrcall(default_toolkit, "getScreenSize") 
height <- .jcall(dim, "D", "getHeight") 
width <- .jcall(dim, "D", "getWidth") 
+0

實際上沒有實際測試過,因爲我自己努力獲得包建立。一旦我管理這個,會報告回來。 –

+2

什麼是downvote?我知道這些想法只有一半完成,但它們仍然是有效的可能性。 –

+1

在我看來,這應該是可以實現的,而不需要JVM!就我個人而言,我只是打包了一些Win32 API調用,但肯定有一個包允許你查詢硬件信息。 –

1

使用此:

system("wmic path Win32_VideoController get VideoModeDescription,CurrentVerticalResolution,CurrentHorizontalResolution /format:value")

爲了讓您在矢量屏幕分辨率,可以實現它:

suppressWarnings(
    current_resolution <- system("wmic path Win32_VideoController get CurrentHorizontalResolution,CurrentVerticalResolution /format:value", intern = TRUE) %>% 
     strsplit("=") %>% 
     unlist() %>% 
     as.double() 
) 
    current_resolution <- current_resolution[!is.na(current_resolution)] 

現在你將有一個向量長度爲​​2:

> current_resolution 
[1] 1920 1080