Windows 缩略图调整器






4.50/5 (8投票s)
2006年4月28日
3分钟阅读

44452

868
一篇关于如何制作一个应用程序,该应用程序允许您更改 Windows 中缩略图大小的文章。这些是在 Windows 资源管理器中点击“查看”->“缩略图”时看到的缩略图。
引言
本文介绍了如何编写一个应用程序,该应用程序允许您更改 Windows 中缩略图的大小。这些是在 Windows 资源管理器中点击“查看”->“缩略图”时看到的缩略图。它还涵盖了一些简单的注册表操作和图像处理。
背景
我妻子是一名摄影师,有一天她问我是否可以把 Windows 中的缩略图做得更大。我不知道,但认为如果微软没有提供这项功能,那将是很奇怪的。经过一番快速搜索,我在 Lockergnome 上找到了 Diana Higgins 提供的一个技巧,介绍了如何做到这一点。它如预期般工作,所以我立刻开始制作这个 GUI 前端。
注册表项 ThumbnailSize 的屏幕截图,我们将重点关注它
工作原理
在深入细节之前,我将简要概述我们需要做什么才能使其正常工作。首先,我们需要一个 GUI 来显示缩略图将有多大。所以,这部分使用了一个带有滑动条的简单 Windows 窗体。当用户拖动滑动条时,窗体上的图像会被调整大小。接下来我们需要的是读取注册表设置的函数,以及一个写入注册表设置的函数。那么,让我们开始吧……
使用代码
代码经过大量注释,以便任何人都能轻松理解。它不使用任何在程序上复杂的函数。如果代码中有任何对初学者来说难以理解的地方——那一定是对注册表处理函数。因此,这里将对此进行详细解释。我还建议您现在就下载源代码,并跟随本文进行学习。
首先。由于此应用程序是注册表的 GUI 前端,我们需要读取和写入注册表的函数,您猜对了,就是注册表。我将在此处解释并展示 saveRegSettings()
的代码。此函数分别接收 keyName
和 keyValue
作为参数,类型为 string
和 int
。
然后,我们使用一个 try
块来使一切更加安全。在 try
块内部,我们将 RegistryKey
设置为键 \HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer,并使用 Registry.CurrentUser.CreateSubKey()
创建一个名为 keyName
的键,该键目前只能是“ThumbnailSize”。然后,我们使用 RegistryKey.SetValue
为该键赋值——keyValue
。现在,一切都完成了,我们可以使用 RegistryKey.Close();
关闭该键。
这是应用程序的一个重要代码部分。saveRegSettings
用于写入 Windows 注册表
/*
* This function saves the settings to the registry key.
* valid keyName values are:
* - ThumbnailSize
*/
public void saveRegSettings(string keyName, int keyValue)
{
RegistryKey key = null;
string subKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer";
//Try to create the registry key...
try
{
//Create the subkey...
key = Registry.CurrentUser.CreateSubKey(subKey);
//...give it a value...
key.SetValue(keyName, keyValue);
//...and then close it.
key.Close();
}
catch(Exception ex)
{
//Something failed, give a nice error message.
Console.WriteLine("Edit: HKEY_CURRENT_USER\\" +
subKey + "\\" + key + "\n" +
"ERROR: " + ex.ToString());
}
finally
{
//Finally - we clean up, that means closing the open registry key.
key.Close();
}
}
由于此应用程序具有一些易于理解的图像处理功能,我将在此处也对此进行一些介绍,只是为了指出它。下面的代码从文件中加载图像并将其显示在窗体上。这是通过使用 System.Drawing
中的 Image.FromFile()
函数来实现的。它以一个包含图像路径的字符串作为参数。生成的图像保存在一个名为 img
的 Image
变量中。
下一部分将对已加载的图像进行缩略图处理,并用缩略图覆盖 img
变量中的旧全尺寸图像。tbThumbSize.Value
是滚动条的值,代表用户选择的缩略图大小。makeThumbnail()
接受三个参数:Image
、maxWidth
和 maxHeight
。您会从代码中看到两者都被设置为相同的值。这样,我们就可以同时处理纵向和横向图片,因为在制作缩略图时会保留纵横比。
最后,我们将标签设置为滚动条的值,然后进行清理。就这样!
//Try to load the demo image
img = Image.FromFile(Application.StartupPath + "\\Sunset.jpg");
//Try to resize (make a thumbnail) of the demo image.
img = ph.makeThumbnail(img, tbThumbSize.Value, tbThumbSize.Value);
//Set the thumbnail size in the label
lblThumbSize.Text = tbThumbSize.Value + " x " + tbThumbSize.Value;
//Set the Image property of the picture
//container to the newly loaded image.
picThumb.Image = img;
ph = null;
picThumb.Refresh();
结论
这向您展示了如何制作一个应用程序来更改 Windows 缩略图大小。然而,您可以非常轻松地将这些技术应用于更改 Windows 注册表中的任何其他内容。例如,您可以创建一个应用程序来读取 Windows 在启动时加载的应用程序,并允许用户更改它们。
如果您还没有这样做,现在是下载源代码并开始尝试的好时机。
历史
- 2006 年 4 月 28 日 - 初始发布。