سلام دوستان
چه جور میشه cursor موس رو در #C عوض کرد؟
من یه cursor با یه برنامه ساختم. اسم cursor رو m.cur گذاشتم. حالا چه جوری میشه بردش تو برنامه ی #C؟
می توانید Cursor هر کنترل ای که مشخصه Cursor داره تغییر دهید، چون شما می خواهید فایل Cursor رو از
فایل بخوانید دو روش وجود داره.
روش اول : استفاده کردن از خود کلاس Cursor ساده است اما فقط Cursor های سیاه و سفید دو بیتی
رو پشتیبانی می کنه :
کد:
this.Cursor = new Cursor("C:\\My Folder\\cursor.cur");
روش دوم : استفاده کردن از توابع API ویندوز نیاز به کد نویسی اضافی داره، اما می توانید Cursor های
رنگی و 32 بیتی نیمه شفاف رو هم نمایش بدهید :
کد:
private const int IMAGE_CURSOR = 0x2;
private const int LR_DEFAULTCOLOR = 0x0;
private const int LR_LOADFROMFILE = 0x10;
[DllImport("user32.dll", EntryPoint = "LoadImageW", CharSet = CharSet.Unicode)]
private static extern int LoadImage(int hInst, string lpszName, int uType, int cxDesired, int cyDesired, int fuLoad);
public static Cursor LoadCursor(string filename)
{
return new Cursor((IntPtr)LoadImage(0, filename, IMAGE_CURSOR, 0, 0, LR_DEFAULTCOLOR | LR_LOADFROMFILE));
}
و اینطوری تابع دست ساز LoadCursor رو بکار ببرید :
کد:
this.Cursor = LoadCursor("C:\\My Folder\\cursor.cur");
ویه سوال دیگه: هر ابعادی رو برای cursor توی #C میشه استفاده کرد (مثلا 128*128 پیکسل)؟
با تشکر
شاید ، بستگی داره که کارت گرافیکی کامپیوتر تون تا چه ابعادی رو ساپورت کنه، در هر صورت در خود
فرمت Cur حداکثر ابعادی که ذخیره میشه 256x256 است و بیشتر نمیشه. ابعاد استاندارد اش هم 32x32
است. اصولا ترسیم کردن Cursor توسط شتابدهنده کارت گرافیکی انجام میشه و کارت گرافیکی های مدرن هم
معمولا تا ابعاد 256x256 رو پشتیبانی می کنند. دقت کنید که ممکنه یک کارت گرافیکی ارزون قیمت یا
سیستم عامل های قدیمی ابعاد بزرگتر از 32x32 رو پشتیبانی نکنند.
اگه خواستید فایل Cursor رو کنار فایل اجرایی پروژه تان قرار دهید برای بدست آوردن مسیر کامل فایل Cursor
از کد زیر کمک بگیرید :
کد:
[COLOR="Blue"] string folder = System.IO.Path.GetDirectoryName(Application.ExecutablePath);
string path = System.IO.Path.Combine(folder, "cursor.cur");
[/COLOR] this.Cursor = new Cursor([COLOR="Blue"]path[/COLOR]);
یک پروژه که هر دو روش رو با سه Cursor دو بیتی 32x32 و 32 بیتی 32x32 و 32 بیتی 256x256 امتحان کنید :
CustomizeCursor.zip
توجه داشته باشید که Cursor های 32 بیتی رو فقط می توانید با استفاده از API ویندوز فراخوانی کنید
و اگه از کلاس Cursor فراخوانی کنید خطا میده.