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.
ZDecimalvà sau đó sử dụng một Xmaxso 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 xlà 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.
ZStandardmặc dù, sẽ ΔXkhác nhau giữa các máy tính? Ngoài ra, ZDecimalchỉ 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.heightlưu một byte
/*/*/sy*r SPDisplaysDataType|awk '/so/{print$2$3$4}'
Chạy system_profiler, nhận được SPDisplaysDataTypethông tin, tìm kiếm đầu tiên sotrong 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?
@60Hzrõ ràng không có trong spec.
|sed 1q, nâng đếm byte lên đến 58 byte.
awkvà 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
Sendchứ 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.PrimaryMonitorSizegiả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 VideoModeDescriptionlà 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 getScreenSizesử 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,1200ngắn hơn ..
xthay 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 voidnhưng bạn đang trả lại stringvì 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}
xrandrthuộ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?
grepvà các sednỗ lực phân tích xrandrđầu ra ( pastebin.com/uTVcjWCq ) đã dài hơn.
xrandr|grep *|cut -d' ' -f1nà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
mtoàn cầu và bỏ qua int:m[3];main(){...
m+1nê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'%vtiế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 grepcho một dòng và cutmột phần của dòng đó, thường ngắn hơn với một awkcuộc gọi duy nhất : xdpyinfo|awk '/dim/&&$0=$2'.
dimensionsnhưng tôi không có xdpyinfotrê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|cutlà awk.
*0. Đầu ra xrandr của tôi là *0 3360 x 1050 ( 889mm x 278mm ) *0.
-f2Btw, 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 768có thể là đầu ra hợp lệ. Chúng tôi chỉ sử dụng (+ .. "x" .. )để tránh printkhoảng cách ngầm định.
2048x1080thự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.screenvà nhận được widthvà heightthuộ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.screenbạ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