PDA

View Full Version : سوال: استفاده از آیکون به جای کرسرهای پیش فرض



mehdi2004171
دوشنبه 20 دی 1389, 23:12 عصر
من مي خواهم در بعضي از مواقع از يک آيکون به جاي کرسر استفاده کنم پس از جستجو به دستورات زير رسيدم

public struct IconInfo
{
public bool fIcon;
public int xHotspot;
public int yHotspot;
public IntPtr hbmMask;
public IntPtr hbmColor;
}

[DllImport("user32.dll")]
public static extern IntPtr CreateIconIndirect(ref IconInfo icon);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetIconInfo(IntPtr hIcon, ref IconInfo pIconInfo);
public static Cursor CreateCursor(Bitmap bmp, int xHotSpot, int yHotSpot)
{
IconInfo tmp = new IconInfo();
GetIconInfo(bmp.GetHicon(), ref tmp);
tmp.xHotspot = xHotSpot;
tmp.yHotspot = yHotSpot;
tmp.fIcon = true;
return new Cursor(CreateIconIndirect(ref tmp));
}
private void Form2_Paint(object sender, PaintEventArgs e)
{
Bitmap bitmap = new Bitmap(64, 64);
Graphics g = Graphics.FromImage(bitmap);
Icon ico = new Icon(Application.StartupPath + @"\Call-red.ico");
g.DrawIcon(ico, 64, 64);
e.Graphics.DrawIcon(ico, 64, 64);
this.Cursor = CreateCursor(bitmap, 3, 3);
bitmap.Dispose();
}

اما دستورات بالا در زمان اجرا کرسر را که حالا ايکون جايگزين ان شده است نشان نمي دهد؟
چه اشکالي در دستورات وجود دارد آيا راه حلي ديگري نيز هست؟

ali.rezaei7
سه شنبه 21 دی 1389, 00:04 صبح
از این دستور ساده هم میتونی استفاده کنی!


this.Cursor = new Cursor("IconFileName");

mehdi2004171
سه شنبه 21 دی 1389, 08:18 صبح
از این دستور ساده هم میتونی استفاده کنی!


this.Cursor = new Cursor("IconFileName");


دوست عزیز دستور شما برای زمانی است که فایل ما کرسر باشد یعنی پسوند cur داشته باشد
فایل من آیکون است

ali.rezaei7
سه شنبه 21 دی 1389, 09:26 صبح
شما اون دستور رو، با فایل های آیکن(ico) امتحان کن، حتما نتیجه می گیری.