কীভাবে পিক্সেলের মধ্যে পর্দার রেজোলিউশন (প্রস্থ x উচ্চতা) পাওয়া যায়?
আমি একটি জে ফ্রেম এবং জাভা সুইং পদ্ধতি ব্যবহার করছি।
কীভাবে পিক্সেলের মধ্যে পর্দার রেজোলিউশন (প্রস্থ x উচ্চতা) পাওয়া যায়?
আমি একটি জে ফ্রেম এবং জাভা সুইং পদ্ধতি ব্যবহার করছি।
উত্তর:
আপনি Toolkit.getScreenSize()
পদ্ধতিটি দিয়ে পর্দার আকার পেতে পারেন ।
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
double width = screenSize.getWidth();
double height = screenSize.getHeight();
মাল্টি-মনিটর কনফিগারেশনে আপনার এটি ব্যবহার করা উচিত:
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
int width = gd.getDisplayMode().getWidth();
int height = gd.getDisplayMode().getHeight();
আপনি যদি ডিপিআই-তে স্ক্রিন রেজোলিউশন পেতে চান তবে আপনাকে এই getScreenResolution()
পদ্ধতিটি ব্যবহার করতে হবে Toolkit
।
সংস্থানসমূহ:
getScreenSize
1920x1080 ফেরত।
এই কোডটি সিস্টেমে গ্রাফিক্স ডিভাইসগুলি গণনা করবে (যদি একাধিক মনিটর ইনস্টল করা থাকে), এবং আপনি সেই তথ্যটি মনিটরের সাদৃশ্য বা স্বয়ংক্রিয় অবস্থান নির্ধারণ করতে ব্যবহার করতে পারেন (কোনও অ্যাপ্লিকেশন চালু থাকাকালীন কিছু সিস্টেম রিয়েল-টাইম ডিসপ্লেগুলির জন্য সামান্য সাইড মনিটর ব্যবহার করে) পটভূমি এবং এই জাতীয় মনিটর আকার, পর্দার রং ইত্যাদি দ্বারা চিহ্নিত করা যেতে পারে):
// Test if each monitor will support my app's window
// Iterate through each monitor and see what size each is
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
Dimension mySize = new Dimension(myWidth, myHeight);
Dimension maxSize = new Dimension(minRequiredWidth, minRequiredHeight);
for (int i = 0; i < gs.length; i++)
{
DisplayMode dm = gs[i].getDisplayMode();
if (dm.getWidth() > maxSize.getWidth() && dm.getHeight() > maxSize.getHeight())
{ // Update the max size found on this monitor
maxSize.setSize(dm.getWidth(), dm.getHeight());
}
// Do test if it will work here
}
এই কলটি আপনাকে চাওয়া তথ্য দেবে।
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
এটি প্রদত্ত উপাদানটিকে বর্তমানে নির্ধারিত পর্দার রেজোলিউশন (রুট উইন্ডোর বেশিরভাগ অংশের মতো কিছু সেই স্ক্রিনে দৃশ্যমান)।
public Rectangle getCurrentScreenBounds(Component component) {
return component.getGraphicsConfiguration().getBounds();
}
ব্যবহার:
Rectangle currentScreen = getCurrentScreenBounds(frameOrWhateverComponent);
int currentScreenWidth = currentScreen.width // current screen width
int currentScreenHeight = currentScreen.height // current screen height
// absolute coordinate of current screen > 0 if left of this screen are further screens
int xOfCurrentScreen = currentScreen.x
আপনি যদি সরঞ্জামদণ্ডগুলি ইত্যাদির সম্মান করতে চান তবে আপনাকে এটি দিয়েও গণনা করতে হবে:
GraphicsConfiguration gc = component.getGraphicsConfiguration();
Insets screenInsets = Toolkit.getDefaultToolkit().getScreenInsets(gc);
এখানে কিছু কার্যকরী কোড (জাভা 8) যা ডান সর্বাধিক স্ক্রিনের ডান দিকের প্রান্তের x অবস্থান প্রদান করে। যদি কোনও স্ক্রিন পাওয়া যায় না, তবে এটি 0 ফেরত দেয়।
GraphicsDevice devices[];
devices = GraphicsEnvironment.
getLocalGraphicsEnvironment().
getScreenDevices();
return Stream.
of(devices).
map(GraphicsDevice::getDefaultConfiguration).
map(GraphicsConfiguration::getBounds).
mapToInt(bounds -> bounds.x + bounds.width).
max().
orElse(0);
জাভাডকের লিঙ্কগুলি এখানে।
গ্রাফিক্সএনভায়রনমেন্ট.গেটলোক্যালগ্রাফিক্স এনভায়রনমেন্ট ()
গ্রাফিকস এনভায়রনমেন্ট.সেটস্ক্রিন ডিভাইস ()
গ্রাফিকস ডিভাইস.সেট ডিফল্ট কনফিগারেশন ()
গ্রাফিকস কনফিগারেশন.জেটবাউন্ডস ()
এই তিনটি ফাংশন জাভাতে স্ক্রিনের আকারটি ফিরিয়ে দেয়। এই কোডটি মাল্টি-মনিটরের সেটআপগুলি এবং টাস্ক বারগুলির জন্য অ্যাকাউন্ট করে। অন্তর্ভুক্ত ফাংশনগুলি হ'ল : getScreenInsets () , getScreenWorkingArea () এবং getScreenTotalArea () ।
কোড:
/**
* getScreenInsets, This returns the insets of the screen, which are defined by any task bars
* that have been set up by the user. This function accounts for multi-monitor setups. If a
* window is supplied, then the the monitor that contains the window will be used. If a window
* is not supplied, then the primary monitor will be used.
*/
static public Insets getScreenInsets(Window windowOrNull) {
Insets insets;
if (windowOrNull == null) {
insets = Toolkit.getDefaultToolkit().getScreenInsets(GraphicsEnvironment
.getLocalGraphicsEnvironment().getDefaultScreenDevice()
.getDefaultConfiguration());
} else {
insets = windowOrNull.getToolkit().getScreenInsets(
windowOrNull.getGraphicsConfiguration());
}
return insets;
}
/**
* getScreenWorkingArea, This returns the working area of the screen. (The working area excludes
* any task bars.) This function accounts for multi-monitor setups. If a window is supplied,
* then the the monitor that contains the window will be used. If a window is not supplied, then
* the primary monitor will be used.
*/
static public Rectangle getScreenWorkingArea(Window windowOrNull) {
Insets insets;
Rectangle bounds;
if (windowOrNull == null) {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
insets = Toolkit.getDefaultToolkit().getScreenInsets(ge.getDefaultScreenDevice()
.getDefaultConfiguration());
bounds = ge.getDefaultScreenDevice().getDefaultConfiguration().getBounds();
} else {
GraphicsConfiguration gc = windowOrNull.getGraphicsConfiguration();
insets = windowOrNull.getToolkit().getScreenInsets(gc);
bounds = gc.getBounds();
}
bounds.x += insets.left;
bounds.y += insets.top;
bounds.width -= (insets.left + insets.right);
bounds.height -= (insets.top + insets.bottom);
return bounds;
}
/**
* getScreenTotalArea, This returns the total area of the screen. (The total area includes any
* task bars.) This function accounts for multi-monitor setups. If a window is supplied, then
* the the monitor that contains the window will be used. If a window is not supplied, then the
* primary monitor will be used.
*/
static public Rectangle getScreenTotalArea(Window windowOrNull) {
Rectangle bounds;
if (windowOrNull == null) {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
bounds = ge.getDefaultScreenDevice().getDefaultConfiguration().getBounds();
} else {
GraphicsConfiguration gc = windowOrNull.getGraphicsConfiguration();
bounds = gc.getBounds();
}
return bounds;
}
int resolution =Toolkit.getDefaultToolkit().getScreenResolution();
System.out.println(resolution);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
double width = screenSize.getWidth();
double height = screenSize.getHeight();
framemain.setSize((int)width,(int)height);
framemain.setResizable(true);
framemain.setExtendedState(JFrame.MAXIMIZED_BOTH);
আমি প্রায়শই ব্যবহার করি কোডগুলির একটি স্নিপেট এখানে। নেটিভ মনিটরের অবস্থানগুলি ধরে রাখার সময় এটি সম্পূর্ণ উপলভ্য স্ক্রিন অঞ্চলটি (মাল্টি-মনিটর সেটআপগুলিতেও) প্রদান করে।
public static Rectangle getMaximumScreenBounds() {
int minx=0, miny=0, maxx=0, maxy=0;
GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
for(GraphicsDevice device : environment.getScreenDevices()){
Rectangle bounds = device.getDefaultConfiguration().getBounds();
minx = Math.min(minx, bounds.x);
miny = Math.min(miny, bounds.y);
maxx = Math.max(maxx, bounds.x+bounds.width);
maxy = Math.max(maxy, bounds.y+bounds.height);
}
return new Rectangle(minx, miny, maxx-minx, maxy-miny);
}
দুটি পূর্ণ-এইচডি মনিটরযুক্ত কম্পিউটারে, যেখানে বামদিকে প্রধান মনিটর হিসাবে সেট করা হয় (উইন্ডোজ সেটিংসে), ফাংশনটি ফিরে আসে
java.awt.Rectangle[x=0,y=0,width=3840,height=1080]
একই সেটআপে, তবে প্রধান মনিটরের হিসাবে ডান মনিটরের সেট সহ ফাংশনটি ফিরে আসে
java.awt.Rectangle[x=-1920,y=0,width=3840,height=1080]
int screenResolution = Toolkit.getDefaultToolkit().getScreenResolution();
System.out.println(""+screenResolution);