PDA

View Full Version : سوال: چطور می شه یک فرم طراحی کرد که با توجه به تغییر رزولوشن هر سیستم به صورت fullscreen باشه



electro_esma
سه شنبه 05 مهر 1390, 18:37 عصر
با سلام
من یه فرم دارم می خوام این فرم روی هر سیستمی باشه به صورت فول اسکرین در بیاد.

یعنی اگه رزولوشن سیستم من 768 * 1024 و برنامه من رفت روی سیستم دیگه که رزولوشن اون 600 * 800

هستش همچنان فرم من فول اسکرین باشه .

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

electro_esma
سه شنبه 05 مهر 1390, 19:02 عصر
این همه اساتید به نام توی این تالار
یعنی یکی نیست یه گوشه چشمی هم به ما بندازه

بابا دمتون گرم..
من هنوز منتظرم ....:متفکر:

electro_esma
سه شنبه 05 مهر 1390, 20:28 عصر
بابا اصلا بگین این کار شدنیه یا نه
گرچه من فکر می کنم شدنی باشد.

یه چیزی تو مایه های بازی های کامپیوتری که هر رزولوشنی باشی فول اسکرین می شه.

وبلاگ من www.newcsharp.blogfa.com (http://www.newcsharp.blogfa.com)

sorooshk
سه شنبه 05 مهر 1390, 20:43 عصر
با سلام
ببین شدنی هست ولی توی حالت معمولی C#.Net یعنی WindowsForm Application خیلی سخت هست و آخرش هم 90% درست میشه و 100% نیست.
برای این که به نتیجه 100% برسی باید از WPF استفاده بکنی. تکنولوژی WPF یکی از جالبترین قسمتهاش اینه که خودش مدیریت رزولوشن را برای شما انجام میده و برنامه همیشه یکسان دیده میشه.
برای یادگیری WPF هم میتونی از مجموعه ویدئویی شرکت App Dev که به زبان انگلیسی هست استفاده بکنی. به نظر من که عالی آموزش داده.
الان کم کم WindowsForm Application داره کنار میره و WPF جای اون را میگیره به خصوص برای ویندوز های Vista, 7, 8 البته ویندوز 8 هنوز به صورت کامل نیومده ولی حدودا از محیط کاربری مثل ویندوز ویستا و 7 استفاده میکنه. در چنین شرایطی از WPF استفاده بکنی خیلی بهتره چون میتونی از افکتهای جذاب هم در برنامه هات استفاده بکنی.

nunegandom
سه شنبه 05 مهر 1390, 21:23 عصر
به همین سادگی:

this.Height = SystemInformation.VirtualScreen.Height;
this.Width = SystemInformation.VirtualScreen.Width;

sorooshk
سه شنبه 05 مهر 1390, 21:31 عصر
خوب جناب nunegandom دستوری که شما نوشتید به نظر من فقط در هنگام اجرای برنامه کار میده.
حالا فرض کنید الان کاربر برنامه را تو سیستمی که رزولوشن 768*1024 داره باز میکنه بعد شیطونی میکنه و در حالی که برنامه باز هست میره رزولوشن را میزاره روی 600*800 حالا چیکار باید کرد؟
چه جوری میخواهید به برنامه بگین که بفهمه اگر رزولوشن تغییر کرد دو تا کد فوق کار بده؟

در چنین حالتی هم دو کد بالا کار میده یا نه؟ من تست نکردم اگر کار میده بفرمایید تا استفاده کنیم.
ممنون.

sorooshk
سه شنبه 05 مهر 1390, 21:35 عصر
الان تست کردم.
هم میشه هم نمیشه
اگر کاربر فرم ها را بر اساس اصول و با Container های مختلف و حساب شده و با Anchor ها ایجاد کرده باشه کد شما کار میده و گرنه محتویات فرم به هم میریزه ولی توی WPF خود WPF همه چیز را تنظیم میکنه.

princereza
سه شنبه 05 مهر 1390, 23:05 عصر
دوست عزیز می توانی از این کد استفاده کنی، حتی اگر کاربر در حین کار برنامه resolution سیستم را تغییر دهد باز هم برنامه شما به حالت fullscreen خواهد ماند.
Form1.ActiveForm.WindowState = FormWindowState.Maximized;

jeson_park
چهارشنبه 06 مهر 1390, 01:32 صبح
سلام

this.Height = Screen.PrimaryScreen.Bounds.Height;
this.Width = Screen.PrimaryScreen.Bounds.Width;

sanay_esh
چهارشنبه 06 مهر 1390, 01:45 صبح
این کد رو مطالعه کنی خیلی از مشکلاتی که داری حل میشه و راحت میتونی همه کار با فرمهات بکنی !!!!

public void CreateMyForm()
{
// Create a new instance of the form.
Form form1 = new Form();
// Create two buttons to use as the accept and cancel buttons.
Button button1 = new Button ();
Button button2 = new Button ();

// Set the text of button1 to "OK".
button1.Text = "OK";
// Set the position of the button on the form.
button1.Location = new Point (10, 10);
// Set the text of button2 to "Cancel".
button2.Text = "Cancel";
// Set the position of the button based on the location of button1.
button2.Location
= new Point (button1.Left, button1.Height + button1.Top + 10);
// Set the caption bar text of the form.
form1.Text = "My Dialog Box";
// Display a help button on the form.
form1.HelpButton = true;

// Define the border style of the form to a dialog box.
form1.FormBorderStyle = FormBorderStyle.FixedDialog;
// Set the MaximizeBox to false to remove the maximize box.
form1.MaximizeBox = false;
// Set the MinimizeBox to false to remove the minimize box.
form1.MinimizeBox = false;
// Set the accept button of the form to button1.
form1.AcceptButton = button1;
// Set the cancel button of the form to button2.
form1.CancelButton = button2;
// Set the start position of the form to the center of the screen.
form1.StartPosition = FormStartPosition.CenterScreen;

// Add button1 to the form.
form1.Controls.Add(button1);
// Add button2 to the form.
form1.Controls.Add(button2);

// Display the form as a modal dialog box.
form1.ShowDialog();
}

nunegandom
چهارشنبه 06 مهر 1390, 10:56 صبح
خوب جناب nunegandom دستوری که شما نوشتید به نظر من فقط در هنگام اجرای برنامه کار میده.
حالا فرض کنید الان کاربر برنامه را تو سیستمی که رزولوشن 768*1024 داره باز میکنه بعد شیطونی میکنه و در حالی که برنامه باز هست میره رزولوشن را میزاره روی 600*800 حالا چیکار باید کرد؟
چه جوری میخواهید به برنامه بگین که بفهمه اگر رزولوشن تغییر کرد دو تا کد فوق کار بده؟

در چنین حالتی هم دو کد بالا کار میده یا نه؟ من تست نکردم اگر کار میده بفرمایید تا استفاده کنیم.
ممنون.

شما اگه یه کپی از این دو تغغیر بگیرید و با تایمر چک کنید که "اگه تغیر کرده اند تو هم اند تو هم اندازه اونا بشو" مشکل حله.

sorooshk
چهارشنبه 06 مهر 1390, 12:08 عصر
به نظر من روش جالبی نیست چون اون تایمر هم باعث استفاده بیش از حد از منابع سیستم میشه.
ضمنا مثلا کاربر در حین کار کردن هست یه مرتبه برنامه قیافش عوض میشه و جالب نیست.

روشی هم که دوستمون با WindowState گفته بودند باید بگم که فقط برای Maximize کردن هست و محتویات فرم در صورت تغییر رزولوشن به هم میریزه.

کلا مدیریت برنامه در تغییر کردن رزولوشن به این راحتی ها نیست من خیلی از مقالات CodeProject و سایت های مشابه را هم سر یه پروژه ای که داشتم چک کردم شاید بگم حدود دو هفته کارم شده بود بررسی این مسئله در WindowsForm Application راهی که 100% بتونه تغییر رزولوشن را مدیریت بکنه و قیافه برنامه بهم نریزه نداریم ولی در WPF با کوچکترین روش ها همه چیز درست کار می کنند.

m2_farzan
چهارشنبه 06 مهر 1390, 17:03 عصر
بهترین راه برای حل مساله، پاک کردن صورت مساله است!!!

میتونید بجای این که سایز برنامه تون رو با توجه به رزولیشن سیستم تغییر بدید، رزولیشن سیستم رو با توجه به سایز برنامه تون عوض کنید!
برای این کار یکی از دوستانمون یک کلاس درست کرده بود که بگردین توی همین سایت پیدا میکنید.

البته این کار معایبی داره. یکی این که شاید کار شما رو راه نندازه. من خودم چند وقت پیش به این مورد برخوردم اما من داشتم یک بازی فول اسکرین درست می کردم اما ممکنه کار شما فرق کنه. دوم این که ممکنه کارت گرافیک طرف رزولیشن مورد نظر شما رو پشتیبانی نکنه. البته اکثر گرافیک ها اندازه هایی مثل 800 * 600 را پشتیبانی می کنند. امیدوارم تونسته باشم کمکی کنم.

Farshid007
چهارشنبه 06 مهر 1390, 17:50 عصر
اولاندش باید anchor کنترل هاتونو تنظیم کنید تا در تغییر اندازه فرم اختلال ایجاد نشه
بعد خاصیت Windows State فرم اصلی رو Maximized بزاریید
تا برنامه fullScreen بیاد بالا