c# 类似于千千静听的桌面停靠程序
下面是程序源代码,如有转载,请保留作者信息,谢谢。
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;
namespace LIKETTPlaryer{ /// <summary> /// 类似于千千静听的桌面停靠程序 /// 作者:abrahu /// 时间:2008-11-07 /// 如有转载,请保留此项 /// </summary> public partial class Form1 : Form { Point p; int SCREEN_WIDTH; int SCREEN_HEIGHT; int BIND;//设置停靠容差
public Form1() { InitializeComponent(); Rectangle screen = Screen.GetWorkingArea(this); SCREEN_WIDTH = screen.Width; SCREEN_HEIGHT = screen.Height; BIND = 20; }
private void Form1_MouseDown(object sender, MouseEventArgs e) { p.X = e.X; p.Y = e.Y; }
private void Form1_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { int POS_X=this.Left; int POS_Y=this.Top; int POS_WIDTH=this.Width; int POS_HEIGHT=this.Height; int MOUSE_MOVE_BIND_X = e.X - p.X; int MOUSE_MOVE_BIND_Y = e.Y - p.Y; if (POS_X <= BIND && POS_X >= -1*BIND)//停靠在左边 { this.Left = 0; if (Math.Abs(MOUSE_MOVE_BIND_X) > BIND) { this.Left = POS_X + MOUSE_MOVE_BIND_X; this.Top = POS_Y + MOUSE_MOVE_BIND_Y; } } if (POS_X >= SCREEN_WIDTH - BIND - POS_WIDTH && POS_X <= SCREEN_WIDTH + BIND - POS_WIDTH)//停靠在右边 { this.Left = SCREEN_WIDTH - POS_WIDTH; if (Math.Abs(MOUSE_MOVE_BIND_X) > BIND) { this.Left = POS_X + MOUSE_MOVE_BIND_X; this.Top = POS_Y + MOUSE_MOVE_BIND_Y; } } if (POS_Y <= BIND && POS_Y >= -1 * BIND)//停靠在上边 { this.Top = 0; if (Math.Abs(MOUSE_MOVE_BIND_Y) > BIND) { this.Left = POS_X + MOUSE_MOVE_BIND_X; this.Top = POS_Y + MOUSE_MOVE_BIND_Y; } } if (POS_Y >= SCREEN_HEIGHT - BIND - POS_HEIGHT && POS_Y <= SCREEN_HEIGHT + BIND - POS_HEIGHT)//停靠在下边 { this.Top = SCREEN_HEIGHT - POS_HEIGHT; if (Math.Abs(MOUSE_MOVE_BIND_Y) > BIND) { this.Left = POS_X + MOUSE_MOVE_BIND_X; this.Top = POS_Y + MOUSE_MOVE_BIND_Y; } } if ((POS_X > BIND && POS_X < SCREEN_WIDTH - BIND - POS_WIDTH && POS_Y > BIND && POS_Y < SCREEN_HEIGHT - BIND - POS_HEIGHT) || POS_X < -1 * BIND || POS_X > SCREEN_WIDTH + BIND - POS_WIDTH || POS_Y > SCREEN_HEIGHT + BIND - POS_HEIGHT || POS_Y < -1 * BIND) { this.Left = POS_X + MOUSE_MOVE_BIND_X; this.Top = POS_Y + MOUSE_MOVE_BIND_Y; } } } }}
