Cihazın ekran çözünürlüğünü belirli bir biçimde [width]x[height](parantez olmadan) çıkarın . Örneğin, bir çıktı olabilir 1440x900.
İşte kendi ekran çözünürlüğünüzü kontrol etmek için kullanabileceğiniz çevrimiçi bir test cihazı.
'0x0'
Cihazın ekran çözünürlüğünü belirli bir biçimde [width]x[height](parantez olmadan) çıkarın . Örneğin, bir çıktı olabilir 1440x900.
İşte kendi ekran çözünürlüğünüzü kontrol etmek için kullanabileceğiniz çevrimiçi bir test cihazı.
'0x0'
Yanıtlar:
(_=screen)=>_.width+"x"+_.height
İşlev olarak çıktı verir return. f=Başlangıçta ekleyin ve benzeri çağırır f(). Parametresi başlatmak için parametre başlatılıyor kullanır _için screennesne. Gerisi kendi kendini açıklayıcıdır.
f=(_=screen)=>_.width+"x"+_.height
console.log(f())
Not: Bu işleve bir argüman iletmek başarısız olmasına neden olur.
with(screen)alert(width+"x"+height)
Bir gün kullanacağımı asla düşünmedim with! Bunun daha fazla golf oynayabileceğini sanmıyorum.
s=screen,s.width+"x"+s.height(29 karakter) da çalışır.
alert: with(screen)(width+'x'+height)sadece uygun dizeyi döndürür.
_=screen,_.width+"x"+_.height
* sigh * TI-BASIC, her küçük harf için fazladan bir bayt alır.
@Timtech sayesinde +2
-3 @Timtech sayesinde
:If ΔX>.1
:Then
:Disp "96x64
:Else
:Disp "320x240
Bu sadece işe yarar, çünkü TI-BASIC yalnızca iki farklı ekran çözünürlüğüne sahip hesap makinelerinde çalıştırılabilir: 96 x 64 ve 320 x 240. doğru çözünürlük çıktı.
Zor kodlanmış olduğu için bunu şimdilik rakipsiz olarak işaretliyorum.
ZDecimalFarklı bir Xmaxkarşılaştırma yapıp kullanmayarak ve en az bir bayt kullanarak tasarruf edebilirsiniz . Ayrıca, xbir bayt büyük harf yerine iki bayt (x2) olan küçük harf kullanmanız gerektiğini düşünüyorum .
ZDecimalVarsayılan yakınlaştırma ( ZStandard) her iki hesap makinesinde de aynı olduğundan, iki baytlık bir Yakınlaştırma (gibi ) kullanmam gerekiyor . Yine de büyük harfleri düzelteceğim.
ZStandardYine de kullanırsanız ΔX, hesap makineleri arasında daha farklı olurdu ? Ayrıca, ZDecimalsadece bir bayt, bu yüzden bu 31 bayttır.
_=>(s=screen).width+'x'+s.height
console.log((_=>(s=screen).width+'x'+s.height)())
_=>(s=screen).width+'x'+s.heightbir bayt kazandırır
/*/*/sy*r SPDisplaysDataType|awk '/so/{print$2$3$4}'
Çalışır system_profiler, SPDisplaysDataTypebilgi alır, ilk sogirişi arar Resolutionve ekran çözünürlüğünü yazdırır. Birden fazla ekran için bu, tüm çözünürlükleri yazdırır.
Önceki, uygun olmayan değişken:
/*/*/sy*r SPDisplaysDataType|grep so|tr -d 'R :a-w'
2880x1800\n1920x1080@60Hz(iki satır). Bunun diskalifiye edilip edilmediğini bilmiyorum ... veya?
@60Hzaçıkça spesifik değil.
|sed 1qbayt sayısı 58 bayta kadar getirerek uğraşabilirsiniz.
awk bir ekstra bayta ve alarak düzeltdim. :)
s=screen;alert(s.width+"x"+s.height)
SysGet,w,0
SysGet,h,1
Send,%w%x%h%
Bunu .AHK uzantılı bir dosyaya kaydedin ve komut isteminden çalıştırın
Sendyerine kullanmıyorsun MsgBox?
Bir bayt tasarrufu için @Johan du Toit için teşekkürler!
#import<windows.h>
#define G GetSystemMetrics
f(){printf("%dx%d",G(0),G(1));}
#define G GetSystemMetrics f(){printf("%dx%d",G(0),G(1));}
-7 Martin Ender'e teşekkürler
-5 (aslında 12!) Leaky Rahibe'den Regex büyücüsü benden öte.
Bu uzun ama korkunç System.Windows.Forms.SystemInformation.PrimaryMonitorSizeçözümden daha uzun değil
(gwmi win32_videocontroller|% v*n)-replace" |x \d+\D+$"
ilk önce Get-WmiObject( gwmi) biçimindeki bir dize olan Win32_VideoControllerbir üyeyi içeren nesneyi almak için , sonra doğru formatı elde etmek için bir regex değiştirme çalıştırıyorum.VideoModeDescription1920 x 1080 x 4294967296 colors
PS H:\> (gwmi win32_videocontroller|% v*n)-replace" |x \d+\D+$"
1920x1080
(gwmi win32_videocontroller|% v*n)-replace" |x[^x]+$"regex tweaking birkaç byte tıraş.
SystemInformation[][[1,5,2,1,2,1,2,2,;;,2]]~Infix~x
Hangi cihazları bağladığınıza bağlı olarak bu sizin için çalışmayabilir (bilmiyorum). Bu her zaman çalışmalıdır (bağlı en az bir ekranınız varsayarak):
Infix[Last/@("FullScreenArea"/.SystemInformation["Devices","ScreenInformation"][[1]]),x]
SystemInformation[] formun bir ifadesini döndürür
SystemInformationData[{
"Kernel" -> {__},
"FrontEnd" -> {__},
"Links" -> {__},
"Parallel" -> {__},
"Devices" -> {__},
"Network" -> {__},
}]
"Devices"Doğrudan SystemInformation["Devices"]veya olarak erişilebilen, ilgileniyoruz SystemInformation[][[1,5,2]]. Sonuç, formun bir listesi olacaktır
{
"ScreenInformation" -> {__},
"GraphicsDevices" -> {__},
"ControllerDevices" -> {__}
}
Biz istiyoruz "ScreenInformation"kadar ya erişilebilir olan SystemInformation["Devices","ScreenInformation"]veya daha özlü olarak SystemInformation[][[1,5,2,1,2]]. Sonuç formda olacak
{
{
"ScreenArea" -> {__},
"FullScreenArea" -> {{0,w_},{0,h_}},
"BitDepth" -> _,
"Resolution" -> _
},
___
}
Listenin uzunluğu bağladığınız ekran sayısı olacaktır. İlk ekran SystemInformation[][[1,5,2,1,2,1]]ve genişlik ve yükseklik şu şekilde çıkarılabilir. SystemInformation[][[1,5,2,1,2,1,2,2,;;,2]]Sonra sadece Infix xçıktı formatı için bir tane ekleriz.
String f(){java.awt.Dimension s=java.awt.Toolkit.getDefaultToolkit().getScreenSize();return s.width+"x"+s.height;}
Bu yöntem awt kütüphanelerini kullandığından başsız bir Java kurulumunda çalışmaz (TIO'da olduğu gibi). Kaputun altında, arayarakgetScreenSize yapmak, ekran genişliği ve ekran yüksekliği için çağrı yapmak için Java Native Interface'i kullanır (tipik olarak bir C kütüphanesine).
-9 bayt, Olivier Grégoire sayesinde bana ipi basmak yerine iade edebileceğimi hatırlattı.
...x..., çünkü void f(){System.out.print((java.awt.Toolkit.getDefaultToolkit().getScreenSize()+"").replaceAll("[^\\d,]",""));}hangi çıktılar 1920,1200daha kısa ..
xyerine yukarıda gösterdiğim şeyi kullanabildim ,, ancak şu anki yanıtınızdan beş byte daha fazla: void f(){System.out.print((java.awt.Toolkit.getDefaultToolkit().getScreenSize()+"").replaceAll("[^\\d,]","").replace(",","x"));}ya da void f(){System.out.print((java.awt.Toolkit.getDefaultToolkit().getScreenSize()+"").replaceAll(".*?(\\d+).*?(\\d+).*","$1x$2"));}Ah, Java'da ağır olmayan ne var ..; p
_=>{var s=System.Windows.Forms.Screen.PrimaryScreen.Bounds;return s.Width+"x"+s.Height;};
-6 bayt @TheLethalCoder sayesinde bana OP'nin baskıdan bahsetmediğini hatırlattı, bu yüzden bir string döndürmek de iyi. Ve bir -6 bayt lambda değiştirerek.
Func<string>: için derleyerek 11 bayt kaydedebilirsiniz ()=>{var s=System.Windows.Forms.Screen.PrimaryScreen.Bounds;return s.Width+"x"+s.Height;};. Bununla birlikte, bir geri dönüşünüz var voidancak geri döndürüyorsunuz, stringbu nedenle 2 bayt eklemeniz gerekir.
_=>{var s=System.Windows.Forms.Screen.PrimaryScreen.Bounds;return s.Width+"x"+s.Height;};
var s=System.Windows.Forms.Screen.AllScreens[0].Bounds;, aynı sayım da olacaktır, ancak bunu aklınızdan çıkarmadan golf oynayabilirsiniz.
read -aa<<<`xrandr`
echo ${a[7]}x${a[9]::-1}
xrandrX sunucusuna ait, Ubuntu'da x11-xserver-utils tarafından sağlanmaktadır paketi .
Örnek çalışma:
bash-4.3$ read -aa<<<`xrandr`;echo ${a[7]}x${a[9]::-1}
1920x1080
xrandr|grep -oP '\d+x\d+'|line
Sayesinde:
Örnek çalışma:
bash-4.3$ xrandr|grep -oP '\d+x\d+'|line
1920x1080
xrandr|grep *işe yarar mı?
grepve sedgirişimleri ayrıştırmak için xrandr'ın çıkışı ( pastebin.com/uTVcjWCq ) uzun idi.
xrandr|grep *|cut -d' ' -f1? (Yapıştırmanızdaki @ TIO satırındaki eşleşen satırı kullanarak )
from ctypes import*
u=windll.user32.GetSystemMetrics;
print u(0),'x',u(1)
print u(0),'x',u(1)daha küçük ve onun örneği ( link ) izin veriyor
To clarify, If it's equivalent to the output from What is my screen resolution, It's valid.Bu web sitesinde, her bölüm arasında boşluk var
Düzeltmeler için @Arjun ve @ StephenS'e teşekkürler .
fprintf('%ix%i',get(0,'ScreenSize')(3:4))
0kök grafik nesnesinin bir tanıtıcısıdır. Özelliği 'ScreenSize', ekranın koordinatlarını piksel cinsinden içerir. Üçüncü ve dördüncü girişler istenen bilgileri verir.
' '⎕R'x'⍕⌽⊃⎕WG'DevCaps'
⎕WG'DevCaps' Beyaz Doq G ve Dev buz kap abilitie s
⊃ ilk özelliği seç (yükseklik, genişlik)
⌽ ters
⍕ metin olarak biçimlendir
' '⎕R'x' R ' "x", s eplace alanlarda
Ox`ØP(s×Çn)±d+"x"+ight
Sıkıştırılmış dize temsil eder with(screen)width+"x"+height. Oxbunu JavaScript olarak değerlendirir ve sonuç örtük olarak basılır.
(@AppleShell'in yardımından dolayı -4 karakter)
Evet. derler.
m[3];main(){SDL_Init(32);SDL_GetDesktopDisplayMode(0,m);printf("%dx%d",m[1],m[2]);}
Çalıştır: gcc snippet.c -lSDL2 && ./a.out
mküreselleştirerek ve ihmal ederek kısaltabilirsiniz int:m[3];main(){...
m+1kısa m[1]mı olmalı ? veya bu C'de değil, sadece C ++ 'da mı mümkün? elbette printf'in bazı haklı göstergeleri var
Teşekkürler @ Jonathan-allan, @ felipe-nardi-batista
from Tkinter import*
print'%sx%s'%Tk().maxsize()
Tekli ekran kurulumları için bu, sitedeki çıktıyla eşleşir. Bu, birden fazla ekran için tam çözünürlük verir.
print'x'....bir bayt kaydeder
v=Tk().maxsize(), print'%sx%s'%v9 bayt kaydeder.
print'%sx%s'%Tk().maxsize()kaydetti 4> _ <
xdpyinfo|grep dim|cut -d' ' -f7
Man sayfasından:
xdpyinfo - is a utility for displaying information about an X server.
@Floris @manatwork Birkaç byte kaydettiğiniz için teşekkür ederiz!
-d\ yerine yazabilirsiniz -d' '. Her iki gelince Sonra grepbir hat ve için cuto çizginin bir parçası, genellikle tek olan kısadır awkçağrı: xdpyinfo|awk '/dim/&&$0=$2'.
dimensionsama xdpyinfosistemimde yok ...
grep *yıldız işaretini dizindeki tüm dosyalara genişletir.
grep|cutDİR awk.
*0. Benim xrandr çıktım *0 3360 x 1050 ( 889mm x 278mm ) *0.
-f2, kontrol edebilir misiniz xrandr|awk '/\*/{print $2}'?
sadece bütünlüğü için:
PRINT "256x192"
çıktılar 256x192. Spectrum'un sabit bir kablolu ekran çözünürlüğü var.
void setup(){fullScreen();print(width+"x"+height);}
Bu, bu formatta verir: width height. Ayrıca, program kullandığınız ekranın boyutunda bir pencere oluşturur (çünkü her İşleme programı varsayılan olarak bir pencere oluşturur) ve bu program sadece bu pencerenin / çizimin yüksekliğini ve genişliğini verir.
WIDTHxHEIGHT.
((import html-toolkit)
(htmlOnLoad #::((var S(index(getWindow)screen))
(print(+(index S width)"x"(index S height))))))
(Okunabilirlik için satır sonları eklendi)
Sonunda, html-toolkit modülüm biraz kullanım alıyor! Yalnızca Çevrimiçi Deneyin bağlantısında çalışır, komut satırından çalışmayacaktır.
1024 x 768Geçerli çıktı olabilirse birkaç bayt kaydedilebilir . Sadece örtülü boşluklardan (+ .. "x" .. )kaçınmak için kullanıyoruz print.
2048x1080gerçek bir 4K ekran için aslında 4096x2160. Neden bir fikrin var mı? FreeBSD 11'deki Firefox 52.0
window.screenve alma widthve heightondan özelliklerini. Firefox konsolunu window.screenaçtıysanız ve yazdığınızda , görünüşte yanlış olduğunu göreceksiniz 2048x1080.
$ set `xrandr`;echo $6x$8
3360x1050
İki monitörlü bir Cygwin makinesine yönlendirilmiş ekranı olan bir CentOS 5 kutusunda test edildi. İşte tam xrandrçıktı
$ xrandr
SZ: Pixels Physical Refresh
*0 3360 x 1050 ( 889mm x 278mm ) *0
Current rotation - normal
Current reflection - none
Rotations possible - normal
Reflections possible - none
puts `xrandr`.split[7..9].join[0..-2]
Alternatif çözüm (52 bayt):
puts `xrandr`.match(/t (\d+) (x) (\d+),/)[1..3].join