2011-09-05 6 views
9

화면 해상도 (높이, 너비)를 픽셀 단위로 얻을 수있는 방법은 무엇입니까?어떻게 화면 해상도를 얻을 수 있습니까?

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

과 결과를 캡처 할 수 WMI

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

에 commad 줄 인터페이스를 사용할 수, 출력은 예입니다

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

우리는 처음과 마지막 값을 제외한 모든 원하는 나중에 윈도우 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 Home에 없다는 것을 알고 있지만 설치 될지 모르겠습니다. – Marek

+0

경로에 없었습니다! –

1

GetSystemMetricsSM_CXSCREENSM_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

그것은 자바 스크립트와 함께 쉽게 : 당신은 그냥

window.screen.height 
window.screen.width 

당신은 OmegaHat에서 SpiderMonkey 패키지를 사용하여 R에서 자바 스크립트를 호출 할 수 있습니다 않습니다.


또한 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

로 변환. 당신이 길이 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)] 

:

사용이 :로

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

당신이 벡터의 해상도를 화면 얻으려면, 당신은 그것을 구현할 수

> current_resolution 
[1] 1920 1080 
관련 문제