PDA

View Full Version : حرکت تصویر png چسبیده به موس روی فرم و همه کنترل های روی فرم در winform در C#‎



شادی تولایی
یک شنبه 29 خرداد 1401, 10:43 صبح
سلام
من یک برنامه با سی شارپ نوشتم که توی اون میخوام یک تصویر png مثلا یک قلم مو به موس بچسبه و با اون حرکت کنه . مشکل من اینجاست که اون تصویر روی کنترل های درون فرم که میرسه دیگه حالت transparent نداره . تنها راه حلی که براش پیدا کردم این بود که روی هر کنترلی که میره parent تصویر قلم مو رو به اون کنترل تغییر بدم ولی مشکلی که این راه حل داره اینه که تصویر قلم مو وقتی به لبه های کنترل میرسه بریده میشه .
برای توضیح بهتر باید بگم مثلا برنامه من قراره مثل یک برنامه نقاشی وقتی قلم مو روی یک تصویر کلیک کرد اون تصویر رنگش عوض بشه . روی فرم چند تا تصویر توی چند تا picturebox و panel دارم .

153845153846153847

ROSTAM2
یک شنبه 29 خرداد 1401, 16:29 عصر
سلام.
اونطور که از نوشته ها پیداست می خوای رنگ نقاشی ها تو عوض کنی اونم با انتخاب هر کدوم از قلم موها.

سوال: با کلیک رو قلم موها برای نشانگر ماوس چه اتفاقی می افته که تغییر می کنه و به شکل قلم موی مدنظر در می آد؟!!!

شادی تولایی
یک شنبه 29 خرداد 1401, 17:40 عصر
سلام.
اونطور که از نوشته ها پیداست می خوای رنگ نقاشی ها تو عوض کنی اونم با انتخاب هر کدوم از قلم موها.

سوال: با کلیک رو قلم موها برای نشانگر ماوس چه اتفاقی می افته که تغییر می کنه و به شکل قلم موی مدنظر در می آد؟!!!

سلام درسته . یک picturebox به موس میچسبه که با یک تایمر دائما نشانگر موس رو دنبال میکنه . تصویر قلم مو توی اون picturebox هست
در ضمن حرکت قلم مو , parent اون picturebox بر اساس این که نشانگر موس روی کدام کنترل قرار گرفته باشه تغییر میکنه .

شادی تولایی
یک شنبه 29 خرداد 1401, 17:41 عصر
اگر روشی که انتخاب کردم درست نیست لطفا راهنماییم کنین از چه روشی استفاده کنم

mazoolagh
یک شنبه 29 خرداد 1401, 18:39 عصر
البته من بلد نیستم ولی اگر هدف تغییر شکل mouse pointer هست روش اشتباه هست و نیازی به این کار نیست.
یک جستجو روی cutom mouse pointer/cursor انجام بدین احتمالا جواب میگیرین و باحتمال زیاد در خود کتابخانه های دات نت هم ابزار مناسب برای جایگزینی یک فایل تصویری (یا چیزی شبیه این) پیدا میشه.

از زمان کمودور 64 کاربردهای شبیه این بوده.

شادی تولایی
یک شنبه 29 خرداد 1401, 18:44 عصر
البته من بلد نیستم ولی اگر هدف تغییر شکل mouse pointer هست روش اشتباه هست و نیازی به این کار نیست.
یک جستجو روی cutom mouse pointer/cursor انجام بدین احتمالا جواب میگیرین و باحتمال زیاد در خود کتابخانه های دات نت هم ابزار مناسب برای جایگزینی یک فایل تصویری (یا چیزی شبیه این) پیدا میشه.

از زمان کمودور 64 کاربردهای شبیه این بوده.

سلام از اون روش استفاده کردم ولی دو تا مشکل داشتم یکی تصویری که برای نشانگر موس گذاشته میشد کوچیک بود و نمیتونستم بزرگش کنم و دوم اینکه روی بعضی سیستم ها نمیدونم ویندوز چه تنظیماتی داره که اجازه نمیده نشانگر عوض بشه و برنامه خطا میده .

samiasoft
یک شنبه 29 خرداد 1401, 19:33 عصر
سلام از اون روش استفاده کردم ولی دو تا مشکل داشتم یکی تصویری که برای نشانگر موس گذاشته میشد کوچیک بود و نمیتونستم بزرگش کنم و دوم اینکه روی بعضی سیستم ها نمیدونم ویندوز چه تنظیماتی داره که اجازه نمیده نشانگر عوض بشه و برنامه خطا میده .
سلام وقت بخیر
تصویر png را با استفاده از نرم افزارهایی مثل فتوشاپ یا سایت زیر به فرمت cur تبدیل کنید

https://convertio.co/png-cur
و به این شکل میتونید ازش استفاده کنید :
this.Cursor = new Cursor(Application.StartupPath + "\\Cursor1.cur");


https://s25.picofile.com/file/8451022834/curor.jpg

شادی تولایی
یک شنبه 29 خرداد 1401, 20:07 عصر
سلام وقت بخیر
تصویر png را با استفاده از نرم افزارهایی مثل فتوشاپ یا سایت زیر به فرمت cur تبدیل کنید

https://convertio.co/png-cur
و به این شکل میتونید ازش استفاده کنید :
this.Cursor = new Cursor(Application.StartupPath + "\\Cursor1.cur");


https://s25.picofile.com/file/8451022834/curor.jpg

سلام ممنونم از راهنمایی تون . این کارو انجام دادم ولی با این که حجم فایل ساخته شده فقط 262 کیلوبایته پیغام outofmemory میده .
system.outofmemoryexception insufficient memory to continue the execution of the program

samiasoft
دوشنبه 30 خرداد 1401, 15:21 عصر
سلام ممنونم از راهنمایی تون . این کارو انجام دادم ولی با این که حجم فایل ساخته شده فقط 262 کیلوبایته پیغام outofmemory میده .
system.outofmemoryexception insufficient memory to continue the execution of the program

رزولیشن تصویر رو چک کنید. تصویری که من تست کردم 128 در 128 بود با عمق رنگ 32 بیت
اگر نتونستید فایل png تصویر موردنظر را ارسال کنید تا بررسی کنم

ROSTAM2
سه شنبه 18 مرداد 1401, 22:06 عصر
سلام.

برای تغییر Cursor می تونید از این روش ها هم استفاده کنید که هم فایل Cursor - Icon و PNG رو می تونید بعنوان Cursor استفاده کنید.


Icon ICO = null ;
Bitmap BMP;
Icon CUR;
private void Form1_Load(object sender, EventArgs e)
{
String CursorPath = string.Format("{0}{1}\\link.cur", Application.StartupPath, "\\Cursors");
CUR = Icon.ExtractAssociatedIcon(CursorPath);
this.PictureBox1.Image = CUR.ToBitmap();
this.PictureBox1.Cursor = new Cursor(CUR.Handle);


String IconPath = string.Format("{0}{1}\\Search.ico", Application.StartupPath, "\\Images");
ICO = new Icon(IconPath);
this.PictureBox2.Image = Image.FromFile(IconPath);
this.PictureBox2.Cursor = new Cursor(ICO.Handle);


String ImagePath = string.Format("{0}{1}\\New Folder.png", Application.StartupPath, "\\Images");
BMP = new Bitmap(Image.FromFile(ImagePath), new Size(24, 24));
this.PictureBox3.Image = BMP;
this.PictureBox3.Cursor = new Cursor(BMP.GetHicon());


}



153952