diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs
index a30ab85..b911f0e 100644
--- a/McBitFont/Form1.Designer.cs
+++ b/McBitFont/Form1.Designer.cs
@@ -69,6 +69,7 @@
importImageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
exportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
exportFontLayoutPNGToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ frameScreenshotToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -543,7 +544,7 @@
//
// fileToolStripMenuItem
//
- fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { newToolStripMenuItem, openToolStripMenuItem, saveToolStripMenuItem, saveAsToolStripMenuItem, toolStripSeparator1, importTextToolStripMenuItem1, importImageToolStripMenuItem, exportToolStripMenuItem, exportFontLayoutPNGToolStripMenuItem, toolStripSeparator2, exitToolStripMenuItem });
+ fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { newToolStripMenuItem, openToolStripMenuItem, saveToolStripMenuItem, saveAsToolStripMenuItem, toolStripSeparator1, importTextToolStripMenuItem1, importImageToolStripMenuItem, exportToolStripMenuItem, exportFontLayoutPNGToolStripMenuItem, frameScreenshotToolStripMenuItem, toolStripSeparator2, exitToolStripMenuItem });
fileToolStripMenuItem.Name = "fileToolStripMenuItem";
fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
fileToolStripMenuItem.Text = "File";
@@ -635,6 +636,16 @@
exportFontLayoutPNGToolStripMenuItem.ToolTipText = "Create an image with all a table showing all 256 symbols";
exportFontLayoutPNGToolStripMenuItem.Click += ExportPNG;
//
+ // frameScreenshotToolStripMenuItem
+ //
+ frameScreenshotToolStripMenuItem.Image = Properties.Resources.picture_go;
+ frameScreenshotToolStripMenuItem.Name = "frameScreenshotToolStripMenuItem";
+ frameScreenshotToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.P;
+ frameScreenshotToolStripMenuItem.Size = new System.Drawing.Size(224, 22);
+ frameScreenshotToolStripMenuItem.Text = "Frame Screenshot";
+ frameScreenshotToolStripMenuItem.ToolTipText = "Make a screenshot of the current frame";
+ frameScreenshotToolStripMenuItem.Click += frameScreenshotToolStripMenuItem_Click;
+ //
// toolStripSeparator2
//
toolStripSeparator2.Name = "toolStripSeparator2";
@@ -664,7 +675,7 @@
undoToolStripMenuItem.Image = Properties.Resources.arrow_undo;
undoToolStripMenuItem.Name = "undoToolStripMenuItem";
undoToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z;
- undoToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
+ undoToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
undoToolStripMenuItem.Text = "Undo";
undoToolStripMenuItem.ToolTipText = "Undo last canvas change";
undoToolStripMenuItem.Click += undoToolStripMenuItem_Click;
@@ -674,7 +685,7 @@
redoToolStripMenuItem.Image = Properties.Resources.arrow_redo;
redoToolStripMenuItem.Name = "redoToolStripMenuItem";
redoToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y;
- redoToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
+ redoToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
redoToolStripMenuItem.Text = "Redo";
redoToolStripMenuItem.ToolTipText = "Redo canvas change";
redoToolStripMenuItem.Click += redoToolStripMenuItem_Click;
@@ -685,7 +696,7 @@
copyToolStripMenuItem.Name = "copyToolStripMenuItem";
copyToolStripMenuItem.ShortcutKeyDisplayString = "";
copyToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C;
- copyToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
+ copyToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
copyToolStripMenuItem.Text = "Copy";
copyToolStripMenuItem.ToolTipText = "Copy current symbol to clipboard";
copyToolStripMenuItem.Click += copyToolStripMenuItem_Click;
@@ -696,7 +707,7 @@
pasteToolStripMenuItem.Name = "pasteToolStripMenuItem";
pasteToolStripMenuItem.ShortcutKeyDisplayString = "";
pasteToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V;
- pasteToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
+ pasteToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
pasteToolStripMenuItem.Text = "Paste";
pasteToolStripMenuItem.ToolTipText = "Paste from clipboard to current symbol";
pasteToolStripMenuItem.Click += pasteToolStripMenuItem_Click;
@@ -706,7 +717,7 @@
selectToolStripMenuItem.Image = Properties.Resources.fam_rectt;
selectToolStripMenuItem.Name = "selectToolStripMenuItem";
selectToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.R;
- selectToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
+ selectToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
selectToolStripMenuItem.Text = "Select";
selectToolStripMenuItem.ToolTipText = "Toggle Rectangle selection tool";
selectToolStripMenuItem.Click += selectToolStripMenuItem_Click;
@@ -717,7 +728,7 @@
selectAllToolStripMenuItem.Image = Properties.Resources.arrow_out;
selectAllToolStripMenuItem.Name = "selectAllToolStripMenuItem";
selectAllToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.A;
- selectAllToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
+ selectAllToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
selectAllToolStripMenuItem.Text = "Select All";
selectAllToolStripMenuItem.ToolTipText = "Select entire canvas";
selectAllToolStripMenuItem.Click += selectAllToolStripMenuItem_Click;
@@ -1320,6 +1331,7 @@
private System.Windows.Forms.ToolStripMenuItem zerofyWidthToolStripMenuItem;
public System.Windows.Forms.NumericUpDown nudBrush;
private System.Windows.Forms.Label lblBrush;
+ private System.Windows.Forms.ToolStripMenuItem frameScreenshotToolStripMenuItem;
}
}
diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs
index d735281..e4329ac 100644
--- a/McBitFont/Form1.cs
+++ b/McBitFont/Form1.cs
@@ -59,7 +59,7 @@ namespace McBitFont {
public bool monospaced = false;
private bool modified = false;
private bool prjModified = false;
- public const string version = "2.7";
+ public const string version = "2.8";
public string prjName = "Untitled";
public string prjFileName = "";
public int codepage = 1251;
@@ -621,7 +621,7 @@ namespace McBitFont {
SetModified();
changed = true;
}
-
+
}
}
return changed;
@@ -1694,5 +1694,11 @@ namespace McBitFont {
private void nudBrush_ValueChanged(object sender, EventArgs e) {
if (!chkRectSelect.Checked) dotPanel.Cursor = McCursor.GetCursor((int)nudBrush.Value, cellSize, gap);
}
+
+ private void frameScreenshotToolStripMenuItem_Click(object sender, EventArgs e) {
+ FrameScreenshot iform = new(f);
+ iform.ShowDialog();
+ iform.Dispose();
+ }
}
}
diff --git a/McBitFont/FrameScreenshot.Designer.cs b/McBitFont/FrameScreenshot.Designer.cs
new file mode 100644
index 0000000..d465e2b
--- /dev/null
+++ b/McBitFont/FrameScreenshot.Designer.cs
@@ -0,0 +1,147 @@
+namespace McBitFont {
+ partial class FrameScreenshot {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing) {
+ if (disposing && (components != null)) {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent() {
+ components = new System.ComponentModel.Container();
+ btnClose = new System.Windows.Forms.Button();
+ btnOK = new System.Windows.Forms.Button();
+ toolTip1 = new System.Windows.Forms.ToolTip(components);
+ nudUpscale = new System.Windows.Forms.NumericUpDown();
+ chkTransparent = new System.Windows.Forms.CheckBox();
+ dlgSaveImage = new System.Windows.Forms.SaveFileDialog();
+ lblUpscale = new System.Windows.Forms.Label();
+ chkBlackBG = new System.Windows.Forms.CheckBox();
+ ((System.ComponentModel.ISupportInitialize)nudUpscale).BeginInit();
+ SuspendLayout();
+ //
+ // btnClose
+ //
+ btnClose.Location = new System.Drawing.Point(144, 67);
+ btnClose.Name = "btnClose";
+ btnClose.Size = new System.Drawing.Size(88, 27);
+ btnClose.TabIndex = 3;
+ btnClose.Text = "Close";
+ btnClose.UseVisualStyleBackColor = true;
+ btnClose.Click += btnClose_Click;
+ //
+ // btnOK
+ //
+ btnOK.Location = new System.Drawing.Point(12, 67);
+ btnOK.Name = "btnOK";
+ btnOK.Size = new System.Drawing.Size(88, 27);
+ btnOK.TabIndex = 1;
+ btnOK.Text = "Save";
+ btnOK.UseVisualStyleBackColor = true;
+ btnOK.Click += btnOK_Click;
+ //
+ // toolTip1
+ //
+ toolTip1.AutoPopDelay = 10000;
+ toolTip1.InitialDelay = 500;
+ toolTip1.ReshowDelay = 100;
+ //
+ // nudUpscale
+ //
+ nudUpscale.Location = new System.Drawing.Point(12, 27);
+ nudUpscale.Maximum = new decimal(new int[] { 255, 0, 0, 0 });
+ nudUpscale.Minimum = new decimal(new int[] { 1, 0, 0, 0 });
+ nudUpscale.Name = "nudUpscale";
+ nudUpscale.Size = new System.Drawing.Size(51, 23);
+ nudUpscale.TabIndex = 2;
+ toolTip1.SetToolTip(nudUpscale, "Pixel upscale factor (4 means that for each frame pixel there will be 4x4 pixels generated)");
+ nudUpscale.Value = new decimal(new int[] { 4, 0, 0, 0 });
+ //
+ // chkTransparent
+ //
+ chkTransparent.AutoSize = true;
+ chkTransparent.Location = new System.Drawing.Point(85, 18);
+ chkTransparent.Name = "chkTransparent";
+ chkTransparent.Size = new System.Drawing.Size(155, 19);
+ chkTransparent.TabIndex = 5;
+ chkTransparent.Text = "Transparent background";
+ toolTip1.SetToolTip(chkTransparent, "Make background transparent");
+ chkTransparent.UseVisualStyleBackColor = true;
+ chkTransparent.CheckedChanged += chkTransparent_CheckedChanged;
+ //
+ // dlgSaveImage
+ //
+ dlgSaveImage.DefaultExt = "png";
+ dlgSaveImage.Filter = "PNG Image|*.png;*.PNG";
+ //
+ // lblUpscale
+ //
+ lblUpscale.AutoSize = true;
+ lblUpscale.Location = new System.Drawing.Point(12, 9);
+ lblUpscale.Name = "lblUpscale";
+ lblUpscale.Size = new System.Drawing.Size(51, 15);
+ lblUpscale.TabIndex = 4;
+ lblUpscale.Text = "Upscale:";
+ //
+ // chkBlackBG
+ //
+ chkBlackBG.AutoSize = true;
+ chkBlackBG.Enabled = false;
+ chkBlackBG.Location = new System.Drawing.Point(85, 35);
+ chkBlackBG.Name = "chkBlackBG";
+ chkBlackBG.Size = new System.Drawing.Size(132, 19);
+ chkBlackBG.TabIndex = 6;
+ chkBlackBG.Text = "Background is black";
+ toolTip1.SetToolTip(chkBlackBG, "White color is considered as background by default. Check this to invert that");
+ chkBlackBG.UseVisualStyleBackColor = true;
+ //
+ // FrameScreenshot
+ //
+ AcceptButton = btnClose;
+ AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
+ AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ CancelButton = btnClose;
+ ClientSize = new System.Drawing.Size(244, 111);
+ Controls.Add(chkBlackBG);
+ Controls.Add(chkTransparent);
+ Controls.Add(nudUpscale);
+ Controls.Add(lblUpscale);
+ Controls.Add(btnClose);
+ Controls.Add(btnOK);
+ FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ Name = "FrameScreenshot";
+ StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ Text = "Frame Screenshot";
+ Load += FrameScreenshot_Load;
+ ((System.ComponentModel.ISupportInitialize)nudUpscale).EndInit();
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Button btnClose;
+ private System.Windows.Forms.Button btnOK;
+ private System.Windows.Forms.ToolTip toolTip1;
+ private System.Windows.Forms.SaveFileDialog dlgSaveImage;
+ private System.Windows.Forms.Label lblUpscale;
+ private System.Windows.Forms.NumericUpDown nudUpscale;
+ private System.Windows.Forms.CheckBox chkTransparent;
+ private System.Windows.Forms.CheckBox chkBlackBG;
+ }
+}
\ No newline at end of file
diff --git a/McBitFont/FrameScreenshot.cs b/McBitFont/FrameScreenshot.cs
new file mode 100644
index 0000000..4abcf54
--- /dev/null
+++ b/McBitFont/FrameScreenshot.cs
@@ -0,0 +1,69 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Drawing.Imaging;
+using System.Linq;
+using System.Security.Policy;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using static McBitFont.MainForm;
+
+namespace McBitFont {
+ public partial class FrameScreenshot : Form {
+
+ private FrameMiniature f;
+
+ public FrameScreenshot(FrameMiniature frame) {
+ InitializeComponent();
+ f = frame;
+ }
+
+ private void btnOK_Click(object sender, EventArgs e) {
+ if (dlgSaveImage.ShowDialog() == DialogResult.OK) {
+ int upscale = (int)nudUpscale.Value;
+ int x, y;
+ bool transp = chkTransparent.Checked;
+ bool blackBG = chkBlackBG.Checked;
+
+ Bitmap bmp = new(f.width * upscale, f.height * upscale);
+ SolidBrush bb = new(Color.Black);
+ SolidBrush bw = new(Color.White);
+ using (Graphics g = Graphics.FromImage(bmp)) {
+ for (x = 0; x < f.width; x++) {
+ for (y = 0; y < f.height; y++) {
+ if (f.data[x, y]) {
+ if (!transp || (transp && !blackBG)) g.FillRectangle(bb, x * upscale, y * upscale, upscale, upscale);
+ } else
+ if (!transp || (transp && blackBG)) g.FillRectangle(bw, x * upscale, y * upscale, upscale, upscale);
+ }
+ }
+ }
+ bool err = false;
+ try {
+ bmp.Save(dlgSaveImage.FileName, ImageFormat.Png);
+ }
+ catch (Exception ex) {
+ err = true;
+ MessageBox.Show("There was an error during image save: " + ex.Message, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ if (!err) MessageBox.Show("Screenshot has been saved!", "Success!", MessageBoxButtons.OK, MessageBoxIcon.Information);
+
+ }
+ }
+
+ private void FrameScreenshot_Load(object sender, EventArgs e) {
+ btnOK.Focus();
+ }
+
+ private void btnClose_Click(object sender, EventArgs e) {
+ DialogResult = DialogResult.OK;
+ }
+
+ private void chkTransparent_CheckedChanged(object sender, EventArgs e) {
+ chkBlackBG.Enabled = chkTransparent.Checked;
+ }
+ }
+}
diff --git a/McBitFont/FrameScreenshot.resx b/McBitFont/FrameScreenshot.resx
new file mode 100644
index 0000000..8ece073
--- /dev/null
+++ b/McBitFont/FrameScreenshot.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+ 115, 17
+
+
\ No newline at end of file
diff --git a/McBitFont/McBitFont.csproj b/McBitFont/McBitFont.csproj
index 4034c37..945ed93 100644
--- a/McBitFont/McBitFont.csproj
+++ b/McBitFont/McBitFont.csproj
@@ -20,9 +20,9 @@
true
true
icon_64.ico
- 2.7.0.0
- 2.7.0.0
- $(VersionPrefix)2.7.0
+ 2.8.0.0
+ 2.8.0.0
+ $(VersionPrefix)2.8.0
Anton Mukhin
diff --git a/TODO.txt b/TODO.txt
index 5ec0a7a..7b581e3 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -1,10 +1,8 @@
Application:
- Consider migrating to WPF in order to make DPI aware UI
-V Cursor for rectangular selection tool
-V Icons for tool buttons
-V Tooltips now has keyboard shortcuts info
Functionality:
+V Screensot a frame function
Bugs:
-V Fix selection info: change comma to x
+