PDA

View Full Version : چطور میشود شکل فرم را به شکل دلخواه تغییر داد



behnam124
جمعه 03 مهر 1388, 22:16 عصر
با سلام

ترو خدا اگه کسی اطلاعی داره بهم بگه

من میخوام شکله فرم رو مثله یه عکس در بیارم

تو vb واسش کاموننت هست

ولی تو سی شارپ اصلا نتونستم چیزی پیدا کنم

مثلا من میخوام فرمم مثله یه عکس گیتار باشه

من نمیتونم تو سی شارپ نقاطی از فرممو حذف کنم

که طوری که اون ناحیه دیگه جزو فرمم حساب نشه

خواهش میکنم اگه کسی میتونه راهنملییم کنه

ممنون:متفکر:

mahdi_7610
جمعه 03 مهر 1388, 23:16 عصر
سلام

یه نگاه به نمونه ای که گذاشتم بنداز

behnam124
شنبه 04 مهر 1388, 03:07 صبح
سلام

یه نگاه به نمونه ای که گذاشتم بنداز


سلام دوسته عزیز


دقیقا منظورم همینه


میشه یه خورده واسم توضیح بدید نحوه کارتونو

خیلی بهم لطف میکنید

من خیلی به این موضوع احتیاج دارم

منون

mahdi_7610
شنبه 04 مهر 1388, 10:04 صبح
سلام

راستش این کار من نیست .

اینا من قبلا دیده بودم . اما زیاد ازش سر در نیووردم .

misoft.ir
شنبه 04 مهر 1388, 18:28 عصر
سلام
ببین این کارت رو راه میندازه


Bitmap bmp = new Bitmap(this.Width, this.Height);
Rectangle rc = new Rectangle(0, 0, this.Width, this.Height);
this.DrawToBitmap(bmp, rc);

behnam124
یک شنبه 05 مهر 1388, 19:42 عصر
مرسی که میخواین کمکم کنید

ولی این کدی که دادی نمیخواستم

من میخوام مثلا یه عکس گیتارو به صورت فرم در بیارم

به طوریکه رنگ پشت زمینش از فرم حذف شه

یعنی دقیقا میخوام فرمم به شکل دلخوام باشه

شکلی که منظم نیست

Saeed.Masoumi
یک شنبه 05 مهر 1388, 20:01 عصر
سلام
ببین شما یک عکس که می خوای فرمت به اون شکل بشه (اینجا گیتار :لبخند:) برو تو برنامه ادیتور باز کن بعد اون قسمت که می خوای توی فرم دیده نشه رو رنگ خاصی بزن که توی عکست نباشه مثلا سبز روشن (تو عکس ها کمتر از این رنگ استفاهده می شه) بعد بع عنوان عکس بزار پشت زمینه فرمت Formbackgroundimage بعد خاصیت Transparent رو برابر اون رنگ خاص (اینجا سبز ) بزار .البته باید عمق رنگ رو برای اینکار روی 16بیت بزاری توی ویندوز های دیگه درسته.

یک راه دیگه هم هست یکم طولانی ولی همه جا جواب می ده:
ببین همون عکس دفعه قبلی رو بزار پشت زمینه فرمت بعد از دستورات زیر رو به Load فرمت اضافه کن:


private GraphicsPath gpath = new GraphicsPath();
private void Form1_Load(object sender, EventArgs e)
{
Rectangle rc;//
Image MYBGimage = this.BackgroundImage;
Bitmap MYBGbmp = new Bitmap(MYBGimage);
for (int i = 0; i < MYBGbmp.Width; i++)
{
for (int j = 0; j < MYBGbmp.Height; j++)
{
rc=new Rectangle(i,j,1,1);
if (MYBGbmp.GetPixel(i, j).ToArgb()!=Color.Lime.ToArgb())
{
gpath.AddRectangle(rc);
}
}
}
this.Region = new Region(gpath);
}


اینم عکس پشت زمینه:

behnam124
یک شنبه 05 مهر 1388, 20:33 عصر
داداش ممنون

این کد شما هم خوب بود

ولی نیگاه من دقیقا همین کدتون با همین عکستون اجرا کردم

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

یعنی شکله عکسو نمیتونه کامل بیاره

کسی کامپوننت واسه این کار نداره

که کارمون راحت شه

Saeed.Masoumi
یک شنبه 05 مهر 1388, 21:17 عصر
اشکال از شماست
ضمیمه رو ببین:

behnam124
یک شنبه 05 مهر 1388, 22:05 عصر
عالی بود سعید جان


ممنون


داداش یه سوال

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

mrshcom
دوشنبه 06 مهر 1388, 00:00 صبح
یکی بمن بگه چه جوری می تونم بدون زدن دکمه ای وقتی فرم لود میشود خود به خود دکمه بالا وپایین بره؟

behnam124
دوشنبه 06 مهر 1388, 00:06 صبح
اگه امکانش هست بیشتر توضیح بدین در مورده سوالتون

یعنی دکمه متحرک میخواین

اگه منظورتون اینه با تایمر باید انجامش بدین

matrixx2
دوشنبه 28 آذر 1390, 12:33 عصر
با :لبخندساده:سلام و عرض خسته نباشید می خواستم بگم که فکر کنم یه فایلهای DLL ی هم است که این کار رو انجام میده ولی نمی دونم از کجا گیر بیارم.
دوستان اگه کسی در جریانه لطف کنه کمک کنه خیلی نیاز دارم.لطف کنه به من ایمیل بزنه به این آدرسamtan_2008_20@yahoo.com:ناراحت::نا راحت:

Behradit
دوشنبه 01 خرداد 1396, 03:18 صبح
سلام
ببین شما یک عکس که می خوای فرمت به اون شکل بشه (اینجا گیتار :لبخند:) برو تو برنامه ادیتور باز کن بعد اون قسمت که می خوای توی فرم دیده نشه رو رنگ خاصی بزن که توی عکست نباشه مثلا سبز روشن (تو عکس ها کمتر از این رنگ استفاهده می شه) بعد بع عنوان عکس بزار پشت زمینه فرمت Formbackgroundimage بعد خاصیت Transparent رو برابر اون رنگ خاص (اینجا سبز ) بزار .البته باید عمق رنگ رو برای اینکار روی 16بیت بزاری توی ویندوز های دیگه درسته.

یک راه دیگه هم هست یکم طولانی ولی همه جا جواب می ده:
ببین همون عکس دفعه قبلی رو بزار پشت زمینه فرمت بعد از دستورات زیر رو به Load فرمت اضافه کن:


private GraphicsPath gpath = new GraphicsPath();
private void Form1_Load(object sender, EventArgs e)
{
Rectangle rc;//
Image MYBGimage = this.BackgroundImage;
Bitmap MYBGbmp = new Bitmap(MYBGimage);
for (int i = 0; i < MYBGbmp.Width; i++)
{
for (int j = 0; j < MYBGbmp.Height; j++)
{
rc=new Rectangle(i,j,1,1);
if (MYBGbmp.GetPixel(i, j).ToArgb()!=Color.Lime.ToArgb())
{
gpath.AddRectangle(rc);
}
}
}
this.Region = new Region(gpath);
}


اینم عکس پشت زمینه:




ببخشید فایل های ضمیمه کو پس

mmbguide
دوشنبه 01 خرداد 1396, 23:09 عصر
راه ساده و بدون کد نویسی برای ایجاد فرم به اشکال مختلف مثل گیتار اینه که مطاق تصویری که Saeed.Masoumi در نمونه برنامه قرار داده، در واقع جاهای خارج از ناحیه اصلی رو به یک رنگ خاص تغییر میدید که Saeed.Masoumi در تصویر نمونه اون رو به رنگ سبز تغییر داده. حالا در ویژگی BackgroundImage تصویر رو انتخاب کنید و در گام دوم نیاز به کد نویسی ندارید و فقط کافیه ویژگی TranceparenceKey مربوط به فرم رو برابر رنگی که در تصویر به عنوان بخش های اضافه تعیین کردید رو انتخاب کنید.

samiasoft
دوشنبه 01 خرداد 1396, 23:51 عصر
راه ساده و بدون کد نویسی برای ایجاد فرم به اشکال مختلف مثل گیتار اینه که مطاق تصویری که Saeed.Masoumi در نمونه برنامه قرار داده، در واقع جاهای خارج از ناحیه اصلی رو به یک رنگ خاص تغییر میدید که Saeed.Masoumi در تصویر نمونه اون رو به رنگ سبز تغییر داده. حالا در ویژگی BackgroundImage تصویر رو انتخاب کنید و در گام دوم نیاز به کد نویسی ندارید و فقط کافیه ویژگی TranceparenceKey مربوط به فرم رو برابر رنگی که در تصویر به عنوان بخش های اضافه تعیین کردید رو انتخاب کنید.


اشکال از شماست
ضمیمه رو ببین:

تشکر از راهنمایی


به نظرتون نمیتوان این کار رو بصورت دقیق انجام داد؟ الان حاشیه عکس رو دقت کنید هنوزم رنگ سبز رو میبینیم:متفکر:

Maziar47
سه شنبه 02 خرداد 1396, 17:32 عصر
int x,y;
bool bln = false;
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (bln)
{
this.Left += e.X - x;
this.Top += e.Y - y;
}


}


private void Form1_MouseDown(object sender, MouseEventArgs e)
{
bln = true;
x = e.X;
y = e.Y;

}


private void Form1_MouseUp(object sender, MouseEventArgs e)
{
bln = false;
}
این کد کارتو راه میدازه واسه جابه جا کردن فرمت