Xuất độ phân giải màn hình của thiết bị theo định dạng cụ thể[width]x[height]
(không có dấu ngoặc). Ví dụ, một đầu ra có thể là 1440x900
.
'0x0'
Xuất độ phân giải màn hình của thiết bị theo định dạng cụ thể[width]x[height]
(không có dấu ngoặc). Ví dụ, một đầu ra có thể là 1440x900
.
'0x0'
Câu trả lời:
(_=screen)=>_.width+"x"+_.height
Đầu ra là hàm return
. Thêm vào f=
lúc bắt đầu và gọi như thế f()
. Sử dụng khởi tạo tham số để khởi tạo tham số _
cho screen
đối tượng. Phần còn lại là tự giải thích.
f=(_=screen)=>_.width+"x"+_.height
console.log(f())
Lưu ý: Truyền đối số cho hàm này sẽ khiến nó bị lỗi.
with(screen)alert(width+"x"+height)
Không bao giờ nghĩ rằng một ngày nào đó tôi sẽ sử dụng with
! Tôi không nghĩ rằng điều này có thể được chơi gôn hơn nữa.
s=screen,s.width+"x"+s.height
(29 ký tự) cũng hoạt động.
alert
: with(screen)(width+'x'+height)
chỉ trả về chuỗi thích hợp.
_=screen,_.width+"x"+_.height
, 29 byte
* thở dài * TI-BASIC lấy thêm một byte cho mỗi chữ cái viết thường.
+2 nhờ @Timtech
-3 cảm ơn @Timtech
:If ΔX>.1
:Then
:Disp "96x64
:Else
:Disp "320x240
Điều này chỉ hoạt động vì TI-BASIC chỉ có thể chạy trên máy tính có hai độ phân giải màn hình khác nhau: 96 x 64 và 320 x 240. Tôi chỉ kiểm tra xem màn hình nào tôi có bằng cách đặt Zoom thành thứ gì đó khác nhau tùy theo độ phân giải màn hình đưa ra độ phân giải chính xác.
Bây giờ tôi đang đánh dấu điều này là không cạnh tranh, vì nó được mã hóa cứng.
ZDecimal
và sau đó sử dụng một Xmax
so sánh khác nhau , ít nhất là một byte. Ngoài ra, tôi nghĩ rằng bạn cần sử dụng chữ thường x
là hai byte (x2) thay vì chữ hoa một byte tương đương.
ZDecimal
) vì zoom mặc định ( ZStandard
) giống nhau trên cả hai máy tính. Tôi sẽ sửa lỗi viết hoa.
ZStandard
mặc dù, sẽ ΔX
khác nhau giữa các máy tính? Ngoài ra, ZDecimal
chỉ có một byte, vì vậy đây là 31 byte.
_=>(s=screen).width+'x'+s.height
console.log((_=>(s=screen).width+'x'+s.height)())
_=>(s=screen).width+'x'+s.height
lưu một byte
/*/*/sy*r SPDisplaysDataType|awk '/so/{print$2$3$4}'
Chạy system_profiler
, nhận được SPDisplaysDataType
thông tin, tìm kiếm đầu tiên so
trong Resolution
, và in độ phân giải màn hình. Đối với nhiều màn hình, điều này in tất cả các độ phân giải.
Các biến thể trước, malcompliant:
/*/*/sy*r SPDisplaysDataType|grep so|tr -d 'R :a-w'
2880x1800\n1920x1080@60Hz
(hai dòng). Tôi không biết nếu điều đó không đủ điều kiện ... hay?
@60Hz
rõ ràng không có trong spec.
|sed 1q
, nâng đếm byte lên đến 58 byte.
awk
và có thêm một byte. :)
s=screen;alert(s.width+"x"+s.height)
SysGet,w,0
SysGet,h,1
Send,%w%x%h%
Lưu phần này trong một tệp có phần mở rộng .AHK và chạy nó từ dấu nhắc lệnh
Send
chứ không phải MsgBox
?
Cảm ơn @Johan du Toit vì đã tiết kiệm một byte!
#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 cảm ơn Martin Ender
-5 (thực sự là 12!) Từ Leaky Nun , pháp sư Regex vượt xa tôi.
Đây là dài nhưng không dài hơn System.Windows.Forms.SystemInformation.PrimaryMonitorSize
giải pháp khủng khiếp
(gwmi win32_videocontroller|% v*n)-replace" |x \d+\D+$"
đầu tiên chúng tôi Get-WmiObject
( gwmi
) để truy xuất Win32_VideoController
đối tượng chứa thành viên có tên VideoModeDescription
là chuỗi theo định dạng 1920 x 1080 x 4294967296 colors
, sau đó tôi chạy thay thế regex để có định dạng chính xác.
PS H:\> (gwmi win32_videocontroller|% v*n)-replace" |x \d+\D+$"
1920x1080
(gwmi win32_videocontroller|% v*n)-replace" |x[^x]+$"
cạo một vài byte bằng cách điều chỉnh regex.
SystemInformation[][[1,5,2,1,2,1,2,2,;;,2]]~Infix~x
Điều này có thể không phù hợp với bạn tùy thuộc vào thiết bị bạn đã kết nối (tôi không biết). Điều này sẽ luôn hoạt động (giả sử bạn có ít nhất một màn hình được nối):
Infix[Last/@("FullScreenArea"/.SystemInformation["Devices","ScreenInformation"][[1]]),x]
SystemInformation[]
trả về một biểu thức của biểu mẫu
SystemInformationData[{
"Kernel" -> {__},
"FrontEnd" -> {__},
"Links" -> {__},
"Parallel" -> {__},
"Devices" -> {__},
"Network" -> {__},
}]
Chúng tôi quan tâm "Devices"
, có thể được truy cập trực tiếp như SystemInformation["Devices"]
hoặc SystemInformation[][[1,5,2]]
. Kết quả sẽ là một danh sách các hình thức
{
"ScreenInformation" -> {__},
"GraphicsDevices" -> {__},
"ControllerDevices" -> {__}
}
Chúng tôi muốn "ScreenInformation"
, có thể được truy cập bằng SystemInformation["Devices","ScreenInformation"]
hoặc ngắn gọn hơn SystemInformation[][[1,5,2,1,2]]
. Kết quả sẽ có dạng
{
{
"ScreenArea" -> {__},
"FullScreenArea" -> {{0,w_},{0,h_}},
"BitDepth" -> _,
"Resolution" -> _
},
___
}
Độ dài của danh sách sẽ là số lượng màn hình bạn đã kết nối. Màn hình đầu tiên là SystemInformation[][[1,5,2,1,2,1]]
và chiều rộng và chiều cao có thể được trích xuất khi SystemInformation[][[1,5,2,1,2,1,2,2,;;,2]]
chúng ta chỉ cần chèn một Infix
x
định dạng đầu ra.
String f(){java.awt.Dimension s=java.awt.Toolkit.getDefaultToolkit().getScreenSize();return s.width+"x"+s.height;}
Phương thức này sẽ không hoạt động trong bản cài đặt Java không đầu (như trên TIO) vì nó sử dụng các thư viện awt. Trong phần mềm này, việc gọi getScreenSize
sử dụng Giao diện gốc Java để gọi ra (thường là vào thư viện C) cho chiều rộng màn hình và chiều cao màn hình.
-9 byte nhờ Olivier Grégoire đã nhắc nhở tôi rằng tôi có thể trả lại chuỗi thay vì in nó.
...x...
, vì void f(){System.out.print((java.awt.Toolkit.getDefaultToolkit().getScreenSize()+"").replaceAll("[^\\d,]",""));}
đầu ra nào 1920,1200
ngắn hơn ..
x
thay vì ,
sử dụng một số thay thế regex, nhưng nó nhiều hơn năm byte so với câu trả lời hiện tại của bạn: void f(){System.out.print((java.awt.Toolkit.getDefaultToolkit().getScreenSize()+"").replaceAll("[^\\d,]","").replace(",","x"));}
hoặc void f(){System.out.print((java.awt.Toolkit.getDefaultToolkit().getScreenSize()+"").replaceAll(".*?(\\d+).*?(\\d+).*","$1x$2"));}
Ah, điều gì không nặng nề trong Java ..; p
_=>{var s=System.Windows.Forms.Screen.PrimaryScreen.Bounds;return s.Width+"x"+s.Height;};
-6 byte nhờ @TheLethalCoder bằng cách nhắc nhở tôi OP không đề cập đến việc in ấn, vì vậy trả về một chuỗi cũng tốt. Và thêm -6 byte bằng cách thay đổi nó thành lambda.
Func<string>
: ()=>{var s=System.Windows.Forms.Screen.PrimaryScreen.Bounds;return s.Width+"x"+s.Height;};
. Tuy nhiên, bạn có lợi nhuận void
nhưng bạn đang trả lại string
vì vậy bạn cần thêm 2 byte cho điều đó.
_=>{var s=System.Windows.Forms.Screen.PrimaryScreen.Bounds;return s.Width+"x"+s.Height;};
var s=System.Windows.Forms.Screen.AllScreens[0].Bounds;
cũng sẽ giống như vậy nhưng bạn có thể đánh gôn nó với ý tưởng đó trong đầu.
read -aa<<<`xrandr`
echo ${a[7]}x${a[9]::-1}
xrandr
thuộc về máy chủ X, trên Ubuntu được cung cấp bởi gói x11-xserver-utils .
Chạy mẫu:
bash-4.3$ read -aa<<<`xrandr`;echo ${a[7]}x${a[9]::-1}
1920x1080
xrandr|grep -oP '\d+x\d+'|line
Nhờ vào:
Chạy mẫu:
bash-4.3$ xrandr|grep -oP '\d+x\d+'|line
1920x1080
xrandr|grep *
làm việc?
grep
và các sed
nỗ lực phân tích xrandr
đầu ra ( pastebin.com/uTVcjWCq ) đã dài hơn.
xrandr|grep *|cut -d' ' -f1
nào? (sử dụng dòng khớp từ dán của bạn @ TIO )
from ctypes import*
u=windll.user32.GetSystemMetrics;
print u(0),'x',u(1)
print u(0),'x',u(1)
nhỏ hơn và ví dụ của anh ấy ( liên kết ) cho phép nó
To clarify, If it's equivalent to the output from What is my screen resolution, It's valid.
trong trang web đó, có khoảng trống giữa mỗi phần
' '⎕R'x'⍕⌽⊃⎕WG'DevCaps'
⎕WG'DevCaps'
W indow G et Dev ice Cap abilitie s
⊃
chọn thuộc tính đầu tiên (chiều cao, chiều rộng)
⌽
đảo ngược
⍕
định dạng như văn bản
' '⎕R'x'
R không gian eplace với "x" s
Ox`ØP(s×Çn)±d+"x"+ight
Chuỗi nén đại diện with(screen)width+"x"+height
. Ox
đánh giá đây là JavaScript và kết quả được in ngầm.
(-4 ký tự do trợ giúp của @AppleShell)
Vâng. nó biên dịch.
m[3];main(){SDL_Init(32);SDL_GetDesktopDisplayMode(0,m);printf("%dx%d",m[1],m[2]);}
Chạy với: gcc snippet.c -lSDL2 && ./a.out
m
toàn cầu và bỏ qua int
:m[3];main(){...
m+1
nên ngắn hơn m[1]
phải không? hoặc không thể có trong C mà chỉ có trong C ++? chắc chắn printf có một số mã thông báo bổ nhiệm
Cảm ơn @ Jonathan-allan, @ felipe-nardi-batista
from Tkinter import*
print'%sx%s'%Tk().maxsize()
Đối với các thiết lập hiển thị đơn, điều này phù hợp với đầu ra từ trang web. Điều này cung cấp toàn bộ độ phân giải cho nhiều màn hình.
print'x'....
lưu một byte
v=Tk().maxsize()
, print'%sx%s'%v
tiết kiệm 9 byte.
print'%sx%s'%Tk().maxsize()
lưu thêm 4> _ <
xdpyinfo|grep dim|cut -d' ' -f7
Từ trang nam:
xdpyinfo - is a utility for displaying information about an X server.
@Floris @manatwork Cảm ơn bạn đã tiết kiệm một vài byte!
-d\
thay vì -d' '
. Sau đó, khi nói đến cả hai grep
cho một dòng và cut
một phần của dòng đó, thường ngắn hơn với một awk
cuộc gọi duy nhất : xdpyinfo|awk '/dim/&&$0=$2'
.
dimensions
nhưng tôi không có xdpyinfo
trên hệ thống của mình ...
grep *
mở rộng dấu hoa thị cho tất cả các tệp trong thư mục.
grep|cut
là awk
.
*0
. Đầu ra xrandr của tôi là *0 3360 x 1050 ( 889mm x 278mm ) *0
.
-f2
Btw, bạn có thể kiểm tra xrandr|awk '/\*/{print $2}'
không?
chỉ để hoàn thiện:
PRINT "256x192"
đầu ra 256x192
. Spectrum có độ phân giải màn hình cứng cố định.
void setup(){fullScreen();print(width+"x"+height);}
Kết quả này ở định dạng này : width height
. Ngoài ra, chương trình tạo một cửa sổ có kích thước bằng màn hình bạn đang sử dụng (vì mọi chương trình Xử lý đều tạo một cửa sổ theo mặc định) và chương trình này chỉ xuất ra chiều cao và chiều rộng của cửa sổ / phác thảo này.
WIDTHxHEIGHT
.
puts [winfo screenw .]x[winfo screenh .]
((import html-toolkit)
(htmlOnLoad #::((var S(index(getWindow)screen))
(print(+(index S width)"x"(index S height))))))
(Ngắt dòng được thêm vào để dễ đọc)
Cuối cùng, mô-đun bộ công cụ html của tôi được sử dụng! Chỉ hoạt động trong liên kết Dùng thử trực tuyến, sẽ không hoạt động từ dòng lệnh.
Một vài byte có thể được lưu nếu 1024 x 768
có thể là đầu ra hợp lệ. Chúng tôi chỉ sử dụng (+ .. "x" .. )
để tránh print
khoảng cách ngầm định.
2048x1080
thực sự cho một màn hình 4K thực sự 4096x2160
. Bất cứ ý tưởng tại sao? Firefox 52.0 trên FreeBSD 11.
window.screen
và nhận được width
và height
thuộc tính từ nó. Tôi tưởng tượng nếu bạn mở giao diện điều khiển Firefox và gõ vào window.screen
bạn sẽ thấy rõ ràng là không chính xác 2048x1080
.
$ set `xrandr`;echo $6x$8
3360x1050
Đã thử nghiệm trên hộp CentOS 5 với màn hình được chuyển hướng đến máy Cygwin với hai màn hình. Ở đây xrandr
đầu ra đầy đủ là
$ 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]
Giải pháp thay thế (52 byte):
puts `xrandr`.match(/t (\d+) (x) (\d+),/)[1..3].join