using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; namespace OCR_tester { public partial class Form1 : Form { DirectoryInfo imagesFolder = new DirectoryInfo(@"C:\Users\Moi\Pictures\SeleniumScreens\DataSetHighRes"); const string DEFAULT_IMAGE_NAME = "screen_"; //You will need to add a number and extension after it ex: screen_2.png const string ENGLISH_TESSDATA_FILENAME = "eng.traineddata"; const string DEFAULT_CREATEZONE_BUTTON_TEXT = "Create Zone"; const string DEFAULT_CREATEWINDOW_BUTTON_TEXT = "Create Window"; Point[] zonePoints; Point[] windowPoints; bool selectingZonePoints = false; bool selectingWindowPoints = false; public Form1() { InitializeComponent(); reload(); } private void reload() { pbxInput.Image = Image.FromFile(Path.Combine(imagesFolder.FullName, DEFAULT_IMAGE_NAME + "30.png")); } private void SwitchCreateZoneButton() { if (!selectingWindowPoints) { if (selectingWindowPoints) SwitchCreateWindowButton(); selectingZonePoints = true; zonePoints = new Point[] { new Point(-1, -1), new Point(-1, -1) }; } else { selectingZonePoints = false; } UpdateCreateZoneButton(); } private void SwitchCreateWindowButton() { if (!selectingWindowPoints) { if (selectingZonePoints) SwitchCreateZoneButton(); selectingWindowPoints = true; windowPoints = new Point[] { new Point(-1, -1), new Point(-1, -1) }; } else { selectingWindowPoints = false; } UpdateCreateWindowButton(); } private void UpdateCreateWindowButton() { btnCreateWindow.Text = "Points remaining : " + ZonePointsRemaining(); } private void UpdateCreateZoneButton() { btnCreateZone.Text = "Points remaining : " + ZonePointsRemaining(); } private void btnCreateZone_Click(object sender, EventArgs e) { SwitchCreateZoneButton(); } private void btnCreateWindow_Click(object sender, EventArgs e) { SwitchCreateWindowButton(); } private int ZonePointsRemaining() { int remaining = 0; foreach (Point p in zonePoints) { if (p.X == -1 && p.Y == -1) remaining++; } return remaining; } private void pbxInput_Click(object sender, EventArgs e) { Point coordinates = pbxInput.PointToClient(new Point(MousePosition.X, MousePosition.Y)); float xOffset = (float)pbxInput.Image.Width / (float)pbxInput.Width; float yOffset = (float)pbxInput.Image.Height / (float)pbxInput.Height; if (selectingZonePoints) { int remaining = ZonePointsRemaining(); int index = (zonePoints.Length) - remaining; zonePoints[index] = new Point(Convert.ToInt32((float)coordinates.X * xOffset), Convert.ToInt32((float)coordinates.Y * yOffset)); remaining -= 1; if (remaining == 0) { Image fullImage = pbxInput.Image; Size newSize = new Size(zonePoints[1].X - zonePoints[0].X, zonePoints[1].Y - zonePoints[0].Y); MainZone mainZone = new MainZone(fullImage, new Rectangle(zonePoints[0], newSize)); pbxInput.Image = mainZone.Draw(); SwitchCreateZoneButton(); } else { UpdateCreateZoneButton(); } } } private void btnDeleteZone_Click(object sender, EventArgs e) { reload(); } } }