protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; g.InterpolationMode = InterpolationMode.NearestNeighbor; g.SmoothingMode = SmoothingMode.HighSpeed; g.FillRectangle(backgroundBrush, ScreenRectangle0Based); if (isMouseDown) { if (ShowRectangleInfo) { int offset = 10; Point position = new Point(CurrentMousePosition0Based.X + offset, CurrentMousePosition0Based.Y + offset); using (Font font = new Font("Arial", 17, FontStyle.Bold)) { ImageHelpers.DrawTextWithOutline(g, string.Format("{0}, {1}\r\n{2} x {3}", SelectionRectangle.X, SelectionRectangle.Y, SelectionRectangle.Width, SelectionRectangle.Height), position, font, Color.White, Color.Black, 3); } } g.DrawRectangleProper(borderDotPen, SelectionRectangle0Based); borderDotPen2.DashOffset = (int)(penTimer.Elapsed.TotalMilliseconds / 100) % 10; g.DrawRectangleProper(borderDotPen2, SelectionRectangle0Based); } }
private void DrawRectangleInfo(Graphics g) { int offset = 10; Point position = new Point(CurrentMousePosition0Based.X + offset, CurrentMousePosition0Based.Y + offset); ImageHelpers.DrawTextWithOutline(g, string.Format("X:{0} Y:{1}\r\n{2} x {3}", SelectionRectangle.X, SelectionRectangle.Y, SelectionRectangle.Width, SelectionRectangle.Height), position, rectangleInfofont, Color.White, Color.Black); }
private void DrawFPS(Graphics g) { string text = "FPS: " + FPS; SizeF textSize = g.MeasureString(text, infoFontBig); int offset = 10; Rectangle primaryScreenBounds = CaptureHelpers.GetPrimaryScreenBounds0Based(); Rectangle textRectangle = new Rectangle(primaryScreenBounds.X + offset, primaryScreenBounds.Y + offset, (int)textSize.Width, (int)textSize.Height); if (textRectangle.Offset(10).Contains(InputManager.MousePosition0Based)) { textRectangle.Y = primaryScreenBounds.Height - textRectangle.Height - offset; } ImageHelpers.DrawTextWithOutline(g, text, textRectangle.Location, infoFontBig, Color.White, Color.Black); }
private void DrawInfo(Graphics g) { string text = "FPS: " + FPS; SizeF textSize = g.MeasureString(text, textFont); int offset = 30; Rectangle primaryScreen = Screen.PrimaryScreen.Bounds; Point position = CaptureHelpers.ScreenToClient(new Point(primaryScreen.X + offset, primaryScreen.Y + offset)); Rectangle rect = new Rectangle(position, new Size((int)textSize.Width, (int)textSize.Height)); if (rect.Contains(InputManager.MousePosition0Based)) { position = CaptureHelpers.ScreenToClient(new Point(primaryScreen.X + offset, primaryScreen.Y + primaryScreen.Height - (int)textSize.Height - offset)); } ImageHelpers.DrawTextWithOutline(g, text, position, textFont, Color.White, Color.Black); }
private void DrawScreenColorPickerInfo(Graphics g) { CurrentPosition = InputManager.MousePosition0Based; if (Config.ShowInfo) { Color color = CurrentColor; using (Brush brush = new SolidBrush(color)) { Rectangle colorBox = new Rectangle(CurrentPosition.X + 5, CurrentPosition.Y + 5, 20, 20); g.FillRectangle(brush, colorBox); g.DrawRectangleProper(Pens.Black, colorBox); } string infoText = string.Format(Resources.RectangleRegion_GetColorPickerText, color.R, color.G, color.B, CurrentPosition.X, CurrentPosition.Y); ImageHelpers.DrawTextWithOutline(g, infoText, new PointF(CurrentPosition.X + 25, CurrentPosition.Y + 5), textFont, Color.White, Color.Black); } }
protected override void Draw(Graphics g) { List <Rectangle> areas = AreaManager.GetValidAreas; if (areas.Count > 0 || !AreaManager.CurrentHoverArea.IsEmpty) { UpdateRegionPath(); if (areas.Count > 0) { if (Config.UseDimming) { using (Region region = new Region(regionDrawPath)) { g.Clip = region; g.FillRectangle(lightBackgroundBrush, ScreenRectangle0Based); g.ResetClip(); } } g.DrawPath(borderPen, regionDrawPath); if (areas.Count > 1) { Rectangle totalArea = AreaManager.CombineAreas(); g.DrawCrossRectangle(borderPen, totalArea, 15); if (Config.ShowInfo) { ImageHelpers.DrawTextWithOutline(g, string.Format("X: {0} / Y: {1} / W: {2} / H: {3}", totalArea.X, totalArea.Y, totalArea.Width, totalArea.Height), new PointF(totalArea.X + 5, totalArea.Y - 25), textFont, Color.White, Color.Black); } } } if (AreaManager.IsCurrentHoverAreaValid) { using (GraphicsPath hoverDrawPath = new GraphicsPath { FillMode = FillMode.Winding }) { AddShapePath(hoverDrawPath, AreaManager.CurrentHoverArea.SizeOffset(-1)); g.DrawPath(borderPen, hoverDrawPath); g.DrawPath(borderDotPen, hoverDrawPath); } } if (AreaManager.IsCurrentAreaValid) { g.DrawRectangleProper(borderPen, AreaManager.CurrentArea); g.DrawRectangleProper(borderDotPen, AreaManager.CurrentArea); DrawObjects(g); if (RulerMode) { DrawRuler(g, AreaManager.CurrentArea, borderPen, 5, 10); DrawRuler(g, AreaManager.CurrentArea, borderPen, 15, 100); Point centerPos = new Point(AreaManager.CurrentArea.X + AreaManager.CurrentArea.Width / 2, AreaManager.CurrentArea.Y + AreaManager.CurrentArea.Height / 2); int markSize = 10; g.DrawLine(borderPen, centerPos.X, centerPos.Y - markSize, centerPos.X, centerPos.Y + markSize); g.DrawLine(borderPen, centerPos.X - markSize, centerPos.Y, centerPos.X + markSize, centerPos.Y); } } if (Config.ShowInfo) { foreach (Rectangle area in areas) { if (area.IsValid()) { if (RulerMode) { ImageHelpers.DrawTextWithOutline(g, GetRulerText(area), new PointF(area.X + 15, area.Y + 15), textFont, Color.White, Color.Black); } else { ImageHelpers.DrawTextWithOutline(g, GetAreaText(area), new PointF(area.X + 5, area.Y + 5), textFont, Color.White, Color.Black); } } } } } if (Config.ShowMagnifier) { DrawMagnifier(g); } if (Config.ShowCrosshair) { DrawCrosshair(g); } }
protected override void Draw(Graphics g) { borderDotPen2.DashOffset = (float)timer.Elapsed.TotalSeconds * 10; List <Rectangle> areas = AreaManager.GetValidAreas; if (areas.Count > 0 || !AreaManager.CurrentHoverArea.IsEmpty) { UpdateRegionPath(); if (areas.Count > 0) { using (Region region = new Region(regionDrawPath)) { g.Clip = region; g.FillRectangle(lightBackgroundBrush, ScreenRectangle0Based); g.ResetClip(); } g.DrawPath(borderPen, regionDrawPath); if (areas.Count > 1) { Rectangle totalArea = AreaManager.CombineAreas(); g.DrawCrossRectangle(borderPen, totalArea, 15); if (Config.ShowInfo) { ImageHelpers.DrawTextWithOutline(g, string.Format("X:{0} Y:{1} W:{2} H:{3}", totalArea.X, totalArea.Y, totalArea.Width, totalArea.Height), new PointF(totalArea.X + 5, totalArea.Y - 25), textFont, Color.White, Color.Black); } } } if (AreaManager.IsCurrentHoverAreaValid) { using (GraphicsPath hoverDrawPath = new GraphicsPath { FillMode = FillMode.Winding }) { AddShapePath(hoverDrawPath, AreaManager.CurrentHoverArea.SizeOffset(-1)); g.DrawPath(borderDotPen, hoverDrawPath); g.DrawPath(borderDotPen2, hoverDrawPath); } } if (AreaManager.IsCurrentAreaValid) { g.DrawRectangleProper(borderDotPen, AreaManager.CurrentArea); g.DrawRectangleProper(borderDotPen2, AreaManager.CurrentArea); DrawObjects(g); } if (Config.ShowInfo) { foreach (Rectangle area in areas) { if (area.IsValid()) { ImageHelpers.DrawTextWithOutline(g, string.Format("X:{0} Y:{1}\nW:{2} H:{3}", area.X, area.Y, area.Width, area.Height), new PointF(area.X + 5, area.Y + 5), textFont, Color.White, Color.Black); } } } } if (Config.ShowMagnifier) { DrawMagnifier(g); } if (Config.ShowCrosshair) { DrawCrosshair(g); } }
protected override void Draw(Graphics g) { borderDotPen2.DashOffset = (float)timer.Elapsed.TotalSeconds * 10; List <Rectangle> areas = AreaManager.GetValidAreas; if (areas.Count > 0 || !AreaManager.CurrentHoverArea.IsEmpty) { UpdateRegionPath(); if (areas.Count > 0) { using (Region region = new Region(regionDrawPath)) { g.Clip = region; g.FillRectangle(lightBackgroundBrush, ScreenRectangle0Based); g.ResetClip(); } g.DrawPath(borderPen, regionDrawPath); if (areas.Count > 1) { Rectangle totalArea = AreaManager.CombineAreas(); g.DrawCrossRectangle(borderPen, totalArea, 15); if (Config.ShowInfo) { ImageHelpers.DrawTextWithOutline(g, string.Format("X: {0} / Y: {1} / W: {2} / H: {3}", totalArea.X, totalArea.Y, totalArea.Width, totalArea.Height), new PointF(totalArea.X + 5, totalArea.Y - 25), textFont, Color.White, Color.Black); } } } if (AreaManager.IsCurrentHoverAreaValid) { using (GraphicsPath hoverDrawPath = new GraphicsPath { FillMode = FillMode.Winding }) { AddShapePath(hoverDrawPath, AreaManager.CurrentHoverArea.SizeOffset(-1)); g.DrawPath(borderDotPen, hoverDrawPath); g.DrawPath(borderDotPen2, hoverDrawPath); } } if (AreaManager.IsCurrentAreaValid) { g.DrawRectangleProper(borderDotPen, AreaManager.CurrentArea); g.DrawRectangleProper(borderDotPen2, AreaManager.CurrentArea); DrawObjects(g); if (RulerMode) { DrawRuler(g, AreaManager.CurrentArea, borderPen, 5, 10); DrawRuler(g, AreaManager.CurrentArea, borderPen, 15, 100); Point centerPos = new Point(AreaManager.CurrentArea.X + AreaManager.CurrentArea.Width / 2, AreaManager.CurrentArea.Y + AreaManager.CurrentArea.Height / 2); int markSize = 10; g.DrawLine(borderPen, centerPos.X, centerPos.Y - markSize, centerPos.X, centerPos.Y + markSize); g.DrawLine(borderPen, centerPos.X - markSize, centerPos.Y, centerPos.X + markSize, centerPos.Y); } } if (Config.ShowInfo) { foreach (Rectangle area in areas) { if (area.IsValid()) { string areaText; if (RulerMode) { Point endPos = new Point(area.X + area.Width - 1, area.Y + area.Height - 1); areaText = string.Format("X: {0} / Y: {1} / X2: {2} / Y2: {3}\nWidth: {4} px / Height: {5} px\nDistance: {6:0.00} px / Angle: {7:0.00}°", area.X, area.Y, endPos.X, endPos.Y, area.Width, area.Height, MathHelpers.Distance(area.Location, endPos), MathHelpers.LookAtDegree(area.Location, endPos)); ImageHelpers.DrawTextWithOutline(g, areaText, new PointF(area.X + 15, area.Y + 15), textFont, Color.White, Color.Black); } else { areaText = string.Format("X: {0} / Y: {1}\nW: {2} / H: {3}", area.X, area.Y, area.Width, area.Height); ImageHelpers.DrawTextWithOutline(g, areaText, new PointF(area.X + 5, area.Y + 5), textFont, Color.White, Color.Black); } } } } } if (Config.ShowMagnifier) { DrawMagnifier(g); } if (Config.ShowCrosshair) { DrawCrosshair(g); } }