PDA

View Full Version : سوال: بدست آوردن اینکه مانیتور چند اینچ است



aliekhasteh
پنج شنبه 19 اسفند 1389, 02:15 صبح
بدست آوردن اینکه مانیتور چند اینچ است

pezhvakco
پنج شنبه 19 اسفند 1389, 09:00 صبح
سلام :
اینچ صفحه نمایش رو برای چی می خوای . اگه منظور شما رزولوشن صفحه است که این روش ها است :

ResX:=Screen.Width;
ResY:=Screen.Height;
یا
procedure SetResolution(ResX, ResY: DWord);
var
lDeviceMode : TDeviceMode;
begin
EnumDisplaySettings(nil, 0, lDeviceMode);
lDeviceMode.dmFields:=DM_PELSWIDTH or DM_PELSHEIGHT;
lDeviceMode.dmPelsWidth :=ResX;
lDeviceMode.dmPelsHeight:=ResY;
ChangeDisplaySettings(lDeviceMode, 0);
end;

مثال =>
SetReolution(800,600);

برای راحت تر کار کردن با این سایت بهتره " جستجو " رو ابتدا انجام بدین ...

MohsenB
پنج شنبه 19 اسفند 1389, 10:02 صبح
سلام

مانیتورها مشخصات زیادی دارن .

ازجمله این مشخصات به زبان ساده تعداد پیکسل در هر اینچ هست . مثلا میگن رزولوشن این صفحه نمایش 1024 در 768 هست . این یعنی تو این صفحه نمایش 1024 ستون پیکسل و 768 سطر پیکسل قرار داره . حالا اگه تعداد پیکسل در هر اینچ صفحه نمایش متفاوت باشه اندازه اون صفحه نمایش هم تغییر می کنه .

مشخصه دیگه سایز صفحه نمایشه که فاصله مثلا گوشه بالایی سمت چپ صفحه تا گوشه سمت راست پایینی صفحه نمایش بر حسب اینچ هست . مثلا میگن این صفحه نمایش 17 اینچه .


از دو مطلب بالا این نتیجه رو میشه گرفت که از روی رزولوشن نمیشود اندازه صفحه نمایش را تشخیص داد . مثلا ممکنه رزولوشن یه صفحه نمایش 19 اینچ 1200 در 768 باشه و رزولوشن یه صفحه نمایش دیگه ی 19 اینچ 1600 در 800 باشه .

برای اطلاعات بیشتر : یه مشخصه دیگه صفحه نمایش نسبت اندازه تصویره . مثلا 16:9 . این نشون دهنده یه صفحه نمایش عریضه که نسبت اندازه طول به عرض صفحه نمایش 16 به 9 میباشد .

موفق باشید .

aliekhasteh
پنج شنبه 19 اسفند 1389, 11:27 صبح
مرسی از جوابتون اما میخوام dpi مانیتور رو در رزولوشن های مختلف یا طول و عرض مانیتور رو به سانتیمتر یا اینچ بتونم بدست بیارم

MohsenB
پنج شنبه 19 اسفند 1389, 14:10 عصر
مرسی از جوابتون اما میخوام dpi مانیتور رو در رزولوشن های مختلف یا طول و عرض مانیتور رو به سانتیمتر یا اینچ بتونم بدست بیارم

اینکه دوباره همون سواله که .

و جوابشم همون .

بطور خلاصه : همه مانیطورها تراکم پیکسل یکسان ندارند و نمی توان اندازه صفحه نمایش رو از رو رزولوشن بدست آورد . تنها راهش داشتن مشخصات صفحه نمایشی هایی هست که قراره روشون برنامه نمایش داده بشه ، مثلا بدونی مدل W2053 ال-جی مانیتور بیست اینچ با رزولوشن 1600x900 هست .

aliekhasteh
پنج شنبه 19 اسفند 1389, 16:01 عصر
من می خوام از هر راهی که میشه اندازه مانیتور که چند اینچ یا چند سانت هست رو پیدا کنم ، فکر می کنید راهی هست ؟

MohsenB
جمعه 20 اسفند 1389, 01:03 صبح
من می خوام از هر راهی که میشه اندازه مانیتور که چند اینچ یا چند سانت هست رو پیدا کنم ، فکر می کنید راهی هست ؟

بله یه راه خوب براتون پیدا کردم :

یه فرم درست کنید و یک کنترل Edit به نام Edit1 رو فرم بزارین و بعد یه دکمه رو فرم قرار بدین و توی کد دکمه این چندتا خط رو بنویسید . بعد از زدن دکمه اندازه صفحه نمایش توی کنترل ادیت نوشته میشه :


procedure TForm1.btn1Click(Sender: TObject);
var f : TForm;
l : TLabel;
t : TEdit;
b : TButton;
r : string;
begin
f:= TForm.Create(self);
with f do begin
BorderStyle:= bsDialog;
Width:= 300;
Height:= 120;
l:= TLabel.Create(f);
l.SetBounds(10,10,200,30);
l.Caption:= 'How mach size of your Display ?';
l.Parent:= f;
b:= TButton.Create(f);
b.SetBounds(10,45,60,30);
b.Caption:= 'OK';
b.Parent:= f;
t:= TEdit.Create(f);
t.SetBounds(100,50,150,20);
t.Parent:= f;
t.TabOrder:= 0;
b.ModalResult:= mrOk;
b.Default:= True;
ShowModal;
r:= t.Text;
end;
Edit1.Text:= r;
end;

aliekhasteh
جمعه 20 اسفند 1389, 02:30 صبح
ممنون میشه یه توضیح کوچیک راجع به برنامتون بدین که دقیقا چیو بر می گردونه ؟؟ من سانت یا اینچ مانیتورو میخوام ....
دلیلش اینه که یه TImage روی فرم داریم که روی اون چند تا Lable وجود داره و این Lable ها مشخص میکنه که دقیقا تو اون نقطه عکس اون چیزی که میخوایم چاپ بشه ، حالا وقتی انو به quick Report میفرستیم برای اینکه دقیقا روی کاغذ واقعی هم هونجا چاپ بشه باید sclae عکس 100 باشه تا با quick report همخونی داشته باشه و یه چیز دیگه ای هم که میخواد اینه که دقیقا Top و Left یه QRLabel رو هم بر حسب scale 100 حساب کنیم ، مثلا اگه وضوح صفحه نمایش 1440 در 900 است و Top و Left لیبل روی فرم 120 و280 است ما باید یه سری محاسبه انجام بدیم و عدد sclae صفحه نمایش رو در 100 برای QRLabel و Top و Left حساب کنیم که با اون عدد قبلی تفاوت خواهد داشت از چه راهی میشه اینچ مانیتور رو حساب کرد تا از روی اون بتونی به یه فرمول برسی و در هر رزولوشن که باشی Scale 100 رو برای محاسبه QRLabelهای روی Quick Report برای و Top و Left هاشون حساب کنی ؟؟؟؟

MohsenB
جمعه 20 اسفند 1389, 08:37 صبح
سلام

توضیح اون کد اینه :

تنها راه شما پرسیدن از کاربره .!



برا این کارایی که شما گفتین که نیاز به اینا ندارین .
اصلا صفحه نمایش هیچ تاثیری رو هیچ محاصبه ای نداره . شما باید بر اساس مقیاس فرمتون و مقیاس گزارشتون برنامه رو درست کنین . مثلا فرمتون مقیاسش پیکسل هست و گزارشتون مقیاسش سانتی متره ، شما باید اینارو به هم تبدیل کنید .
راه حل سادشم اینه که هر دوشون تو یه مقیاس باشن . مثلا هر دو پیکسل باشند .

موفق باشید .

aliekhasteh
جمعه 20 اسفند 1389, 15:33 عصر
واقعا ممنون از جوابتون ، خیلی خیلی جالبه

sarchat
سه شنبه 22 اردیبهشت 1394, 11:40 صبح
بهترین راه برای بدست آوردن مشخصات سیستم :
برای مثال بدست آودرن مشخصات مانیتور:
MessageBox.Show("Monitor Size:" + SystemInformation.PrimaryMonitorSize);

fahimi
سه شنبه 22 اردیبهشت 1394, 18:13 عصر
بهترین راه برای بدست آوردن مشخصات سیستم :
برای مثال بدست آودرن مشخصات مانیتور:
MessageBox.Show("Monitor Size:" + SystemInformation.PrimaryMonitorSize);

SystemInformation.PrimaryMonitorSize کدام unit باید یوز شود.
با تشکر

mghorbani2
چهارشنبه 13 آبان 1394, 20:22 عصر
سلام چطور میشه اندازه صفحه نمایش رو به اینچ از طریق HTML دریافت کرد؟

طول و عرض هم میشه به اینچ دریافت کرد؟ چند ماهه دنبالشم ولی جایی پید نکردم.

یوسف زالی
چهارشنبه 13 آبان 1394, 23:52 عصر
سلام. از طریق html یعنی چه؟
وقتی مشخصات مونیتور رو دریافت می کنید، یکی از اونها dpi یا دات پر اینچ است که مشخص می کنه در هر اینچ چند پیکسل وجود داره. با یک عملیات ساده می تونید اندازه واقعی رو هم بیرون بکشید.

prans68
دوشنبه 18 مرداد 1395, 13:23 عصر
double width = 0;
double height = 0;
double diagonal = 0;
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("\\root\\wmi", "SELECT * FROM WmiMonitorBasicDisplayParams");


foreach (ManagementObject mo in searcher.Get())
{
width = (byte)mo["MaxHorizontalImageSize"] / 2.54;
height = (byte)mo["MaxVerticalImageSize"] / 2.54;
diagonal = Math.Sqrt(width * width + height * height);
// Console.WriteLine("Width {0:F2}, Height {1:F2} and Diagonal {2:F2} inches", width, height, diagonal);


}
MessageBox.Show("width:" + width.ToString());
MessageBox.Show("height:" + height.ToString());
MessageBox.Show("diagonal:" + diagonal.ToString());
}
catch (ManagementException es)
{
MessageBox.Show("An error occurred while querying for WMI data: " + es.Message);
}

amirhosseinazadi2005
جمعه 03 بهمن 1399, 11:36 صبح
سلام یه سوال داشتم
من میخاستم اینچ مانیتور کامپیوترم رو بدست بیارم
اگه اندازه فاصله گوشه بالایی سمت چپ تا گوشه پایینی سمت راست رو با اینچ اندازه بگیرم ، عدد به دست آمده همون سایز مانیتور میشه؟

یوسف زالی
جمعه 03 بهمن 1399, 12:14 عصر
سلام. از نظر تئوری بله. ممکنه سازنده ها به اسم مثلا 30 اینچ 29 اینچ بدن و قاب رو هم حساب کنن، ممکن هم هست نکنن