2011-09-05 8 views
9

画面の解像度(高さ、幅)をピクセルで取得するにはどうすればよいですか?画面の解像度を得るにはR

+2

どの画面ですか?私は2つを持っています。 –

+1

より有用な質問はなぜでしょうか。 tkや他のGUIのようなものですか? – mbq

+0

@mbq gvisMotionChartは、生成するグラフの幅と高さが必要です。だから私は、ユーザーの画面解像度に応じてこれらのパラメータを変更できると思った。 –

答えて

10

あなたが複数の画面で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 Professional Edition(XP/7)で利用可能です。私はそれがXPのホームでは欠けていることを知っているが、私はそれがインストールすることができるか分からない。 – Marek

+0

それは道にはなかった! –

1

GetSystemMetricsSM_CXSCREENとなり、SM_CYSCREENとなります。これは、プライマリディスプレイモニタの画面の幅/高さをピクセル単位で返します。

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

私はポスターがC++ではなくR言語からこれをやろうとしていると思います。 –

+1

@David Heffermanはい、あなたは正しい、申し訳ありません、とにかく私はこれを見つけました[link](http://www.nceas.ucsb.edu/scicomp/usecases/CreateRPackageWithC)多分助けて – Arash

4

それはJavaScriptを使用して簡単です:ちょうど

window.screen.height 
window.screen.width 

を行うあなたはOmegaHatからSpiderMonkeyパッケージを使用してRからJavaScriptを呼び出すことができます。


あなたは可能性もsolve this with Java、およびそれにアクセスするためのrJavaパッケージを使用します。あなたがWMI

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

にcommadラインインターフェイスを使用することができ

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")

あなたはベクトルの解像度を選別取得するには、あなたのようにそれを実装することができます:今、あなたは長さ2とのベクトルを持っているでしょう

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)] 

> current_resolution 
[1] 1920 1080