其中x,y是给定的全局变量屏幕坐标,Paint事件中绘制的矩形坐标参数是窗体坐标,我们需要将屏幕坐标转成窗体坐标确保显示位置无误。
protected override void OnPaint(PaintEventArgs e)
{
Point clientPoint = this.PointToClient(new Point(x, y));
int clientX = Math.Max(0, clientPoint.X); // 确保clientX不会小于0
int clientY = Math.Max(0, clientPoint.Y); // 确保clientY不会小于0
// 调整矩形的宽度和高度以适应客户区
int adjustedWidth = Math.Min(width, this.ClientSize.Width - clientX);
int adjustedHeight = Math.Min(height, this.ClientSize.Height - clientY)
// 确保宽度和高度不为负数(这可能在x或y大于客户区大小时发生)
adjustedWidth = Math.Max(adjustedWidth, 0);
adjustedHeight = Math.Max(adjustedHeight, 0);
// 确保绘制的矩形宽高在屏幕范围内
Screen primaryScreen = Screen.PrimaryScreen;
int Screenwidth = primaryScreen.Bounds.Width;
int Screenheight