【发布时间】:2011-01-17 11:16:30
【问题描述】:
我只是想知道是否有人为 C# 制作了类似的东西,类似于在 Windows 7 和 Vista 中几乎无处不在的循环加载。
circular loading thing http://img600.imageshack.us/img600/3127/a7ff394fb1d04795b9a2a21.png
编辑:
我注意到很多关于 cursors 的 cmets 但这与我想要做的事情完全无关。我正在尝试创建一个加载圈,作为自定义控件(或类似的东西)绘制到我的窗口。
到目前为止我所做的尝试:
我尝试从以下 dll %SystemRoot%\System32\imageres.dll 中提取加载图像
没有成功,使用 Mark Pim (this one)提供的链接
我试过了,并且能够成功地从 dll 中提取 A 图像,但我无法确定如何提取我需要的特定图像。是在dll中列为Bitmap/5004的圆圈动画。
这是我尝试过的一些代码
public struct SHFILEINFO
{
public IntPtr hIcon;
public int iIcon;
public uint dwAttributes;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public string szDisplayName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]
public string szTypeName;
};
[DllImport("Shell32.dll")]
public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, int cbFileInfo, uint uFlags);
public Image GetImage()
{
IntPtr hImgLarge;
SHFILEINFO shinfo = new SHFILEINFO() { };
string FileName = @"C:\Windows\System32\imageres.dll";
System.Drawing.Icon myIcon;
hImgLarge = SHGetFileInfo(FileName, 0, ref shinfo, Marshal.SizeOf(shinfo), 0x100);
myIcon = System.Drawing.Icon.FromHandle(shinfo.hIcon);
return myIcon.ToBitmap();
}
我不确定如何操作 SHGetFileInfo 以返回正确的图像。有什么想法吗?
【问题讨论】:
-
您可以在应用程序中包含光标文件并将其绘制到屏幕上。为什么要用 C# 重新实现它?
-
Windows 等待光标比我要找的圆圈要小.. 但是您甚至可以在将光标绘制到屏幕时为其设置动画吗?
-
this.Cursor = Cursors.WaitCursor 提供 Win7 的默认 UI 行为。从用户体验的角度来看,我建议保持这一点,而不是改变其他平台上的用户体验。
-
@Tommy:Cursors.AppStarting 怎么样?
-
我看不出你们都用光标的东西去哪里。我没有在我的问题的任何地方提到“光标”。我想在我的窗口上画一个加载圆圈。
标签: c# .net winforms windows-7 controls