1 ضمیمه
تغییر Cursor برای اشیاء با استفاده از فایل های متفاوت
سلام
با این کدها شما می تونید فایلهای Cursor - PNG و Icon رو بعنوان Cursor استفاده کنید.
Public Class Form2
Dim Cur As Icon
Dim ICO As Icon
Dim BMP As Bitmap
Private Sub Form2_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Dim CursorPath As String = String.Format("{0}{1}\link.cur", Application.StartupPath, "\Cursors")
Cur = Icon.ExtractAssociatedIcon(CursorPath)
Me.PictureBox1.Image = Cur.ToBitmap
Me.PictureBox1.Cursor = New Cursor(Cur.Handle)
Dim IconPath As String = String.Format("{0}{1}\Search.ico", Application.StartupPath, "\Images")
ICO = New Icon(IconPath)
Me.PictureBox2.Image = Image.FromFile(IconPath)
Me.PictureBox2.Cursor = New Cursor(ICO.Handle)
Dim ImagePath As String = String.Format("{0}{1}\New Folder.png", Application.StartupPath, "\Images")
BMP = New Bitmap(Image.FromFile(ImagePath), New Size(24, 24))
Me.PictureBox3.Image = BMP
Me.PictureBox3.Cursor = New Cursor(BMP.GetHicon)
End Sub
End Class
ضمیمه 153953
نقل قول: تغییر Cursor برای اشیاء با استفاده از فایل های متفاوت
سلام دوباره.
فراخوانی Cursor از فایل توسط کلاس Cursor که ورودی filename آدرس فایل رو می گیره باعث می شه نشانگر ماوس یک تصویر سیاه باشه! شاید این مشکل مربوط به نسخه ویندوز باشه اما برای کارایی بهتر از تبدیلش به آیکون می شه از تابع LoadCursorFromFileA Win32-API استفاده کرد:
LoadCursorFromFileA function (winuser.h)
Declaration Section:
Private Declare Function LoadCursorFromFile Lib "user32.dll" Alias "LoadCursorFromFileA" _
(ByVal lpFileName As String) As IntPtr
Method:
Shared Function GetCursor(lpFileName As String) As Cursor
Dim Expr As Cursor = Nothing
Dim Cur As IntPtr
Cur = LoadCursorFromFile(lpFileName)
Expr = New Cursor(Cur)
Return Expr
End Function
نقل قول: تغییر Cursor برای اشیاء با استفاده از فایل های متفاوت
سلام.
در صورتی که کرسر مستقیم از ریسورس فراخوانی و Handle از اون برای تبدیل به کرسر استفاده بشه،ی تصویر سیاه از کرسر برمی گردونه
من یک کلاس ساختم برای فراخوانی Cursor از ریسورس (resx.):
Public Class ResxCursor
Private Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (
ByVal lpFileName As String) As IntPtr
Public Shared Widening Operator CType(ByVal initialData As ResxCursor) As Cursor
Dim ExtractDIR As String = IO.Path.GetFullPath(".")
Dim ExtractPath As String = ExtractDIR + initialData._Cursor.GetHashCode.ToString
IO.File.WriteAllBytes(ExtractPath, initialData._Cursor)
Dim CL As IntPtr = LoadCursorFromFile(ExtractPath)
IO.File.Delete(ExtractPath)
Return New Cursor(CL)
End Operator
Protected Friend _Cursor As Byte()
Sub New(Cursor As Byte())
_Cursor = Cursor
End Sub
End Class
این هم کد تعیین کرسر برای شیء:
Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Me.Button1.Cursor = New ResxCursor(My.Resources.MainFormResource.aero_pen)
End Sub
اگر روش بهتری می دونید اعلام کنید.