我们在程序主界面上添加一个按钮“剪裁缩略图”,并将其点击函数实现如下:
// 是否处于剪切状态
private bool _clipToggled;
private void ToggleClipBtn_Click(object sender, EventArgs e)
{
// 切换缩略图剪切状态
_clipToggled = !_clipToggled;
if (_clipToggled)
{
// 剪切缩略图
SetClip();
}
private bool _clipToggled;
private void ToggleClipBtn_Click(object sender, EventArgs e)
{
// 切换缩略图剪切状态
_clipToggled = !_clipToggled;
if (_clipToggled)
{
// 剪切缩略图
SetClip();
}
}
private void SetClip()
{
// 获得PictureBox控件的位置,作为缩略图剪切的起点
Point point = pictureShowBox.Location;
int nHeight = pictureShowBox.Height;
int nWide = pictureShowBox.Width;
// 设定剪切范围
Windows7Taskbar.SetThumbnailClip(Handle,
new Rectangle(point, new Size(nWide, nHeight)));
}
在这段代码中,我们首先获得了应用程序中用来显示图片的PictureBox控件的位置和大小,以此作为缩略图的剪切范围。然后我们通过调用SetThumbnailClip()函数设置一个剪切范围,这样我们就实现了对缩略图的剪切。然后,当我们将鼠标移动到任务栏图标上,触发缩略图显示的时候,就可以调用SetClip()函数对缩略图进行剪切了。我们需求重载窗体的WndProc函数并实现如下:
protected override void WndProc(ref Message m)
{
if (_clipToggled)
SetClip(); // 剪切缩略图
{
if (_clipToggled)
SetClip(); // 剪切缩略图
base.WndProc(ref m);
}