PDA

View Full Version : تغییر Resolation ویندوز



amir_king2_2
دوشنبه 15 اردیبهشت 1382, 08:30 صبح
سلام.
آیا برای فهمیدن Resolation و تغییر دادن آن کامپوننتی وجود داره ؟

با تشکر امیر

مهدی کرامتی
دوشنبه 15 اردیبهشت 1382, 08:48 صبح
1- ساده ترین راه تشخیص resolution:

ResX:=Screen.Width;
ResY:=Screen.Height;

2- تغییر resolution:

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);

arianexpress
دوشنبه 15 اردیبهشت 1382, 09:53 صبح
به آدرس زیر یک سری بزن :

http://www.arianexpress.com/delphi/viewtopic.php?t=92

Inprise
دوشنبه 15 اردیبهشت 1382, 10:42 صبح
کد آقای دلفی اسیستنت کامل بود و نیاز به مراجعه به محل دیگری نیست . برای اینکه فرآیند فوق رو کنترل کنید میتوانید از برگشت تابع ChangeDisplaySettings ( که از API های ویندوز است لذا مراقب باشید فایل windows در قسمت uses حتما باشد ) استفاده کنید . برگشت این تابع را بصورت Longint تعریف کنید و بعد از فراخوانی تابع ، محتوای آن را بررسی نمائید .

مقادیر ممکن :




DISP_CHANGE_SUCCESSFUL

DISP_CHANGE_RESTART

DISP_CHANGE_BADFLAGS

DISP_CHANGE_FAILED

DISP_CHANGE_BADMODE

DISP_CHANGE_NOTUPDATED



که پیام اول به معنای موفقیت آمیز بودن عملیات است .

موفق باشید

Mohammad S
سه شنبه 10 شهریور 1383, 19:26 عصر
سلام دوستان عزیز
بعد از تغییر رزولوشن با دستورات فوق، مقدار Refresh Rate عوض می شود. برای این مشکل چه باید کرد؟
من همیشه این مقدار رو روی 85 Hertz تنظیم می کنم. بعد از انجام تابع فوق، این مقدار به 60 هرتز تبدیل میشه.
یک سوال دیگه: آیا همیشه بهترین مقدار، 85 هرتز هست؟ بعضی از دوستان می گفتن بهترین مقدار، آخرین مقدار هست، ولی بعضی اوقات عددی بالاتر از 85 می نویسد که می گویند به دلیل خطای سیستم است و نباید بالاتر از 85 قرار گیرد.

با تشکر