/// <summary> /// 点击选取屏幕坐标按钮 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CaptureScreenCoordinatesBtn_Click(object sender, EventArgs e) { DrawScreen drawScreen = new DrawScreen(); if (drawScreen.ShowDialog() == DialogResult.OK) { Rectangle rect = drawScreen.ResultRect; if (rect.Width != 0 && rect.Height != 0) { Rectangle r = ScreenRealSize.ConvertRectangle(rect); isFullScreenCb.Checked = false; screenXNud.Value = r.X; screenYNud.Value = r.Y; screenWNud.Value = r.Width; screenHNud.Value = r.Height; } } }
/// <summary> /// 启动 /// </summary> public ScreenShare() { InitializeComponent(); ScreenRealSize.Init(); Resources.Ico16.Save(ico16, ImageFormat.Png); Size screenRealSize = ScreenRealSize.DESKTOP; realScreenW = screenRealSize.Width; realScreenH = screenRealSize.Height; screenWNud.Value = videoWNud.Value = screenWNud.Maximum = realScreenW; screenHNud.Value = videoHNud.Value = screenHNud.Maximum = realScreenH; ips = Util.GetAllIPv4Addresses(); foreach (var ip in ips) { ipAddressComboBox.Items.Add(ip.Item2 + " - " + ip.Item1); } ipAddressComboBox.SelectedIndex = ipAddressComboBox.Items.Count - 1; Log("屏幕共享初始化完成!"); }
/// <summary> /// 捕获指定区域屏幕截图 /// </summary> /// <param name="r"></param> /// <param name="captureCursor"></param> /// <returns></returns> public static Bitmap CaptureScreenArea(Rectangle r, bool captureCursor) { try { Bitmap bitmap = new Bitmap(r.Width, r.Height); Graphics g = Graphics.FromImage(bitmap); g.CopyFromScreen(r.X, r.Y, 0, 0, new Size(r.Width, r.Height), CopyPixelOperation.SourceCopy); if (captureCursor) { Point p = ScreenRealSize.GetCursor(); g.DrawImage(Resources.Cursor, new Point(p.X - r.X, p.Y - r.Y)); } return bitmap; } catch { return null; } }