// This file is part of the Noddybox.Emulation C# suite. // // Noddybox.Emulation is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Noddybox.Emulation is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Noddybox.Emulation. If not, see . // // Copyright (c) 2012 Ian Cowburn // using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; namespace EmuKeyboardDesigner { public partial class ImageControl : UserControl { private Bitmap image; public ImageControl() { InitializeComponent(); } public int KeyX { get { return Convert.ToInt32(xUpDown.Value); } set { xUpDown.Value = value; UpdateKeyOverlay(); } } public int KeyY { get { return Convert.ToInt32(yUpDown.Value); } set { yUpDown.Value = value; UpdateKeyOverlay(); } } public int KeyWidth { get { return Convert.ToInt32(widthUpDown.Value); } set { widthUpDown.Value = value; UpdateKeyOverlay(); } } public int KeyHeight { get { return Convert.ToInt32(heightUpDown.Value); } set { heightUpDown.Value = value; UpdateKeyOverlay(); } } private void UpdateKeyOverlay() { if (image != null) { Bitmap bmp = new Bitmap(image, image.Width * zoom.Value, image.Height * zoom.Value); using (Graphics g = Graphics.FromImage(bmp)) { using (Pen p = new Pen(Color.White, zoom.Value)) { g.DrawRectangle(p, (int)xUpDown.Value * zoom.Value, (int)yUpDown.Value * zoom.Value, (int)widthUpDown.Value * zoom.Value, (int)heightUpDown.Value * zoom.Value); } } if (imageBox.Image != null) { imageBox.Image.Dispose(); } imageBox.Image = bmp; } } private void OnXChanged(object sender, EventArgs e) { UpdateKeyOverlay(); } private void OnYChanged(object sender, EventArgs e) { UpdateKeyOverlay(); } private void OnWidthChanged(object sender, EventArgs e) { UpdateKeyOverlay(); } private void OnHeightChanged(object sender, EventArgs e) { UpdateKeyOverlay(); } private void OnLoad(object sender, EventArgs e) { OpenFileDialog fsel = new OpenFileDialog(); fsel.Title = "Select image to load"; fsel.CheckFileExists = true; fsel.CheckPathExists = true; fsel.Filter = "Image Files(*.PNG;*.JPG;*.BMP)|*.PNG;*.JPG;*.BMP|All files (*.*)|*.*"; if (fsel.ShowDialog() == DialogResult.OK) { try { image = (Bitmap)Image.FromFile(fsel.FileName); UpdateKeyOverlay(); } catch (Exception ex) { MessageBox.Show("Failed to load " + fsel.FileName, ex.GetType().ToString(), MessageBoxButtons.OK); } } UpdateKeyOverlay(); } private void OnZoomChanged(object sender, EventArgs e) { UpdateKeyOverlay(); } } }