saeedhushmand
دوشنبه 01 خرداد 1391, 16:59 عصر
از دوستان خواهش می کنم بگن برای رزولیشن در کامپیوترهای مختلف راه حلی دارند
من خودم یک برنامه نوشتم که توی یک لب تاب مینی فرم هاش بعضی قسمتاش دیده نمی شد و کاربر امکان کار با اونو توی این نوع لب تاب ها نداشت ، توی خیلی از AutoRun ها هم دیدم این مشکل مثلا توی king 2012 بدلیل بزرگی اتوران کاربر امکان استفاده از اتوران را ندارند(تو لب تاب مینی) توی اینترنت هم خیلی گشتم ولی چیز خاصی پیدا نکردم
اومدم یک تابع نوشتم به صورت زیر می خواستم نظر دوستان رو در مورد این تابع بدونم و اگه راحه مناسب تری هم دارند بنویسند ممنون می شم
publicvoid ResolutionForm()
{
Screen scrn = Screen.FromControl(this);
if (scrn == null)
{
scrn = Screen.PrimaryScreen;
}
int deskHeight = scrn.Bounds.Height;
int deskWidth = scrn.Bounds.Width;
int Width = deskWidth;
int Heigth = deskHeight;
int FormHeight = this.Size.Height;
int FormWidth = this.Size.Width;
int WidthFormNew = (FormWidth * deskWidth) / 1366; //...............Width Resulation
int HeightFormNew = (FormHeight * deskHeight) / 768; //...............Height Resulation
this.Size = newSize(WidthFormNew, HeightFormNew);
this.StartPosition = FormStartPosition.Manual;
this.Location = newPoint((deskWidth - WidthFormNew) / 2, (deskHeight - HeightFormNew) / 2);
}
این تابع برای تنظیم اندازه فرم در رزولیشن های متفاوت نحوه کارشم به این صورت است که رزولیشن کامپیوتر مقصد می گیره اندازه فرم رو هم می گیره با انجام یک سری عمل ریاضی اندازه جدید فرم رو بدست می یاره
دو عدد 1366 و 768 هم به ترتیب عرض و طول رزولیشن کامپیوتری است که توش برنامه ساخته شده
تابع زیر هم برای کنترل های داخل فرم هستش
publicvoid ResolutionControls(Control A)
{
Screen scrn = Screen.FromControl(this);
if (scrn == null)
{
scrn = Screen.PrimaryScreen;
}
int deskHeight = scrn.Bounds.Height;
int deskWidth = scrn.Bounds.Width;
int Width = deskWidth;
int Heigth = deskHeight;
int FormHeight = this.Size.Height;
int FormWidth = this.Size.Width;
int WidthFormNew = (FormWidth * deskWidth) / 1366; //...............Width Resolution
int HeightFormNew = (FormHeight * deskHeight) / 768; //...............Height Resolution
int WidthControl = A.Size.Width;
int HeightControl = A.Size.Height;
A.Size = newSize(WidthFormNew * WidthControl / FormWidth,HeightFormNew * HeightControl / FormHeight);
int LocationControlX = A.Location.X;
int LocationControlY = A.Location.Y;
A.Location = newPoint(WidthFormNew * LocationControlX / FormWidth, HeightFormNew * LocationControlY / FormHeight);
}
طرز کار این تابع هم به صورت تابع بالا هست با این تفاوت که در این تابع کنترل های داخل فرم اندازه و location شون تغییر می کنه
و پس از نوشتن این 2 تابع در فرم باید کد زیر رو به قسمت لود فرمت اضافه کنی
برای تغییر اندازه فرم
ResolutionForm();
برای تغییر اندازه کنترل های داخل فرم
ResolutionControls(dataGridView1);
ResolutionControls(checkBox1);
ResolutionControls(button1);
ResolutionControls(button2);
ResolutionControls(button3);
ResolutionControls(button4);
من خودم یک برنامه نوشتم که توی یک لب تاب مینی فرم هاش بعضی قسمتاش دیده نمی شد و کاربر امکان کار با اونو توی این نوع لب تاب ها نداشت ، توی خیلی از AutoRun ها هم دیدم این مشکل مثلا توی king 2012 بدلیل بزرگی اتوران کاربر امکان استفاده از اتوران را ندارند(تو لب تاب مینی) توی اینترنت هم خیلی گشتم ولی چیز خاصی پیدا نکردم
اومدم یک تابع نوشتم به صورت زیر می خواستم نظر دوستان رو در مورد این تابع بدونم و اگه راحه مناسب تری هم دارند بنویسند ممنون می شم
publicvoid ResolutionForm()
{
Screen scrn = Screen.FromControl(this);
if (scrn == null)
{
scrn = Screen.PrimaryScreen;
}
int deskHeight = scrn.Bounds.Height;
int deskWidth = scrn.Bounds.Width;
int Width = deskWidth;
int Heigth = deskHeight;
int FormHeight = this.Size.Height;
int FormWidth = this.Size.Width;
int WidthFormNew = (FormWidth * deskWidth) / 1366; //...............Width Resulation
int HeightFormNew = (FormHeight * deskHeight) / 768; //...............Height Resulation
this.Size = newSize(WidthFormNew, HeightFormNew);
this.StartPosition = FormStartPosition.Manual;
this.Location = newPoint((deskWidth - WidthFormNew) / 2, (deskHeight - HeightFormNew) / 2);
}
این تابع برای تنظیم اندازه فرم در رزولیشن های متفاوت نحوه کارشم به این صورت است که رزولیشن کامپیوتر مقصد می گیره اندازه فرم رو هم می گیره با انجام یک سری عمل ریاضی اندازه جدید فرم رو بدست می یاره
دو عدد 1366 و 768 هم به ترتیب عرض و طول رزولیشن کامپیوتری است که توش برنامه ساخته شده
تابع زیر هم برای کنترل های داخل فرم هستش
publicvoid ResolutionControls(Control A)
{
Screen scrn = Screen.FromControl(this);
if (scrn == null)
{
scrn = Screen.PrimaryScreen;
}
int deskHeight = scrn.Bounds.Height;
int deskWidth = scrn.Bounds.Width;
int Width = deskWidth;
int Heigth = deskHeight;
int FormHeight = this.Size.Height;
int FormWidth = this.Size.Width;
int WidthFormNew = (FormWidth * deskWidth) / 1366; //...............Width Resolution
int HeightFormNew = (FormHeight * deskHeight) / 768; //...............Height Resolution
int WidthControl = A.Size.Width;
int HeightControl = A.Size.Height;
A.Size = newSize(WidthFormNew * WidthControl / FormWidth,HeightFormNew * HeightControl / FormHeight);
int LocationControlX = A.Location.X;
int LocationControlY = A.Location.Y;
A.Location = newPoint(WidthFormNew * LocationControlX / FormWidth, HeightFormNew * LocationControlY / FormHeight);
}
طرز کار این تابع هم به صورت تابع بالا هست با این تفاوت که در این تابع کنترل های داخل فرم اندازه و location شون تغییر می کنه
و پس از نوشتن این 2 تابع در فرم باید کد زیر رو به قسمت لود فرمت اضافه کنی
برای تغییر اندازه فرم
ResolutionForm();
برای تغییر اندازه کنترل های داخل فرم
ResolutionControls(dataGridView1);
ResolutionControls(checkBox1);
ResolutionControls(button1);
ResolutionControls(button2);
ResolutionControls(button3);
ResolutionControls(button4);