2011-09-05 17 views
9

Ekran çözünürlüğünü (yükseklik, genişlik) piksel olarak nasıl alabilirim?Ekran çözünürlüğünü nasıl alabilirim? R

+2

Hangi ekran? İki taneye sahibim. –

+1

Daha kullanışlı soru; tk veya diğer GUI gibi şeyler var mı? – mbq

+0

@mbq gvisMotionChart, ürettiği grafiğin genişliğini ve yüksekliğini gerektirir. Bu yüzden bu parametreleri kullanıcının ekran çözünürlüğüne göre değiştirebileceğimi düşündüm. –

cevap

10

Sen birden fazla ekranı ile 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" 

ile sonuçlanabilir yakalayabilecek WMI

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

için commad satırı arayüzü kullanabilirsiniz, çıktı, örneğin, bir

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

Biz ilk ve son değerlerin ama hepsini istiyorum, daha sonra Windows 8 ve çalışmıyor cevabı Kabul numaralar

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

Sistemdeki hata ("wmic desktopmonitor ekran genişliği olsun", intern = TRUE): 'wmic' bulunamadı. Bir şey mi kurmalıyım? –

+0

@ gd047 wmic, Windows Professional Edition'da (XP/7) kesinlikle mevcuttur. XP Home'da eksik olduğunu biliyorum, ancak yüklenebileceğini bilmiyorum. – Marek

+0

Yolda değildi! –

1

Windows'ta, ve SM_CYSCREEN numaralı telefonlardan GetSystemMetrics numaralı telefonu arayabilirsiniz. Bu, birincil ekran monitörünün ekranın genişliğini/yüksekliğini piksel cinsinden döndürür.

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

Posterin bunu C++ yerine R dilinden yapmak istediğine inanıyorum. –

+1

@David Hefferman evet haklısın, üzgünüm, yine de bu [link] 'i (http://www.nceas.ucsb.edu/scicomp/usecases/CreateRPackageWithC) bulabilirim belki – Arash

4

O JavaScript kolay: sadece

window.screen.height 
window.screen.width 

Sen OmegaHat den SpiderMonkey paketini kullanarak R JavaScript çağırabilir yapmak.


Ayrıca solve this with Java olabilir ve erişim için rJava paketini kullanın.

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

yardım et paketi inşa etmek için mücadele etmek. Bunu yönettiğimde bir rapor vereceğim. –

+2

İndirgemede ne var? Fikirlerin sadece yarısı tamam olduğunu biliyorum, ancak yine de geçerli olasılıklar. –

+1

Bana öyle geliyor ki bu bir JVM'ye ihtiyaç duymadan başarılabilir olmalı! Şahsen ben sadece bazı Win32 API çağrılarını tamamladım ama kesinlikle bir yerde donanım bilgisini sorgulamanıza imkan veren bir paket var. –

1

dönüştürülür. Eğer uzunluğu 2 ile bir vektör olacak Şimdi

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

:

bunu kullanın: olarak

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

bir vektör içinde ekran çözünürlüğü elde etmek için, bunu uygulayabilirsiniz

> current_resolution 
[1] 1920 1080 
İlgili konular