using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace BizHawk.Client.EmuHawk { public partial class LuaCanvas : Form { private Graphics graphics; public LuaCanvas(int width, int height) { InitializeComponent(); pictureBox.Width = width; pictureBox.Height = height; pictureBox.Image = new Bitmap(width, height); graphics = Graphics.FromImage(pictureBox.Image); } public void SetTitle(string title) { this.Text = title; } public void Clear(Color color) { graphics.Clear(color); } public new void Refresh() { pictureBox.Refresh(); } public void DrawRectangle(int x, int y, int width, int height, Color? outline = null, Color? fill = null) { if (fill.HasValue) { var brush = new SolidBrush(fill.Value); graphics.FillRectangle(brush, x, y, width, height); } var pen = new Pen(outline.HasValue ? outline.Value : Color.Black); graphics.DrawRectangle(pen, x, y, width, height); } public void DrawText(int x, int y, string message, Color? color = null, int? fontsize = null, string fontfamily = null, string fontstyle = null) { var family = FontFamily.GenericMonospace; if (fontfamily != null) { family = new FontFamily(fontfamily); } var fstyle = FontStyle.Regular; if (fontstyle != null) { switch (fontstyle.ToLower()) { default: case "regular": break; case "bold": fstyle = FontStyle.Bold; break; case "italic": fstyle = FontStyle.Italic; break; case "strikethrough": fstyle = FontStyle.Strikeout; break; case "underline": fstyle = FontStyle.Underline; break; } } var font = new Font(family, fontsize ?? 12, fstyle, GraphicsUnit.Pixel); graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit; graphics.DrawString(message, font, new SolidBrush(color ?? Color.White), x, y); } } }