diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index d6f70b6..a30ab85 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -214,7 +214,7 @@ cbZoom.Size = new System.Drawing.Size(75, 23); cbZoom.TabIndex = 6; cbZoom.TabStop = false; - toolTip1.SetToolTip(cbZoom, "Canvas zoom level"); + toolTip1.SetToolTip(cbZoom, "Canvas zoom level (Ctrl+Scroll)"); // // label4 // @@ -249,38 +249,38 @@ // btnFill // btnFill.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + btnFill.Image = Properties.Resources.Canvas_Fill; btnFill.Location = new System.Drawing.Point(92, 9); btnFill.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); btnFill.Name = "btnFill"; btnFill.Size = new System.Drawing.Size(35, 35); btnFill.TabIndex = 8; - btnFill.Text = "⬤"; - toolTip1.SetToolTip(btnFill, "Paint canvas black"); + toolTip1.SetToolTip(btnFill, "Paint canvas black (Ctrl+B)"); btnFill.UseVisualStyleBackColor = true; btnFill.Click += btnFill_Click; // // btnClear // btnClear.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + btnClear.Image = Properties.Resources.Canvas_Clear; btnClear.Location = new System.Drawing.Point(8, 9); btnClear.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); btnClear.Name = "btnClear"; btnClear.Size = new System.Drawing.Size(35, 35); btnClear.TabIndex = 7; - btnClear.Text = "○"; - toolTip1.SetToolTip(btnClear, "Paint canvas white"); + toolTip1.SetToolTip(btnClear, "Paint canvas white (Ctrl+W)"); btnClear.UseVisualStyleBackColor = true; btnClear.Click += btnClear_Click; // // btnMirrorY // btnMirrorY.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + btnMirrorY.Image = Properties.Resources.Famfamfam_Silk_Shape_flip_vertical_16; btnMirrorY.Location = new System.Drawing.Point(92, 92); btnMirrorY.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); btnMirrorY.Name = "btnMirrorY"; btnMirrorY.Size = new System.Drawing.Size(35, 35); btnMirrorY.TabIndex = 6; - btnMirrorY.Text = "⩥"; toolTip1.SetToolTip(btnMirrorY, "Mirror by Y axis (vertical)"); btnMirrorY.UseVisualStyleBackColor = true; btnMirrorY.Click += btnMirrorY_Click; @@ -288,12 +288,12 @@ // btnMirrorX // btnMirrorX.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + btnMirrorX.Image = Properties.Resources.Famfamfam_Silk_Shape_flip_horizontal_16; btnMirrorX.Location = new System.Drawing.Point(50, 92); btnMirrorX.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); btnMirrorX.Name = "btnMirrorX"; btnMirrorX.Size = new System.Drawing.Size(35, 35); btnMirrorX.TabIndex = 5; - btnMirrorX.Text = "◮"; toolTip1.SetToolTip(btnMirrorX, "Mirror by X axis (horizontal)"); btnMirrorX.UseVisualStyleBackColor = true; btnMirrorX.Click += btnMirrorX_Click; @@ -301,65 +301,65 @@ // btnInvert // btnInvert.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + btnInvert.Image = Properties.Resources.z_contrast; btnInvert.Location = new System.Drawing.Point(8, 92); btnInvert.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); btnInvert.Name = "btnInvert"; btnInvert.Size = new System.Drawing.Size(35, 35); btnInvert.TabIndex = 4; - btnInvert.Text = "◪"; - toolTip1.SetToolTip(btnInvert, "Invert pixel colors"); + toolTip1.SetToolTip(btnInvert, "Invert pixel colors (Ctrl+I)"); btnInvert.UseVisualStyleBackColor = true; btnInvert.Click += btnInvert_Click; // // btnShiftDown // btnShiftDown.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + btnShiftDown.Image = Properties.Resources.z_down; btnShiftDown.Location = new System.Drawing.Point(50, 51); btnShiftDown.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); btnShiftDown.Name = "btnShiftDown"; btnShiftDown.Size = new System.Drawing.Size(35, 35); btnShiftDown.TabIndex = 3; - btnShiftDown.Text = "▼"; - toolTip1.SetToolTip(btnShiftDown, "Shift pixels down"); + toolTip1.SetToolTip(btnShiftDown, "Shift pixels down (Ctrl+Down)"); btnShiftDown.UseVisualStyleBackColor = true; btnShiftDown.Click += btnShiftDown_Click; // // btnShiftUp // btnShiftUp.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + btnShiftUp.Image = Properties.Resources.z_uo; btnShiftUp.Location = new System.Drawing.Point(50, 9); btnShiftUp.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); btnShiftUp.Name = "btnShiftUp"; btnShiftUp.Size = new System.Drawing.Size(35, 35); btnShiftUp.TabIndex = 2; - btnShiftUp.Text = "▲"; - toolTip1.SetToolTip(btnShiftUp, "Shift pixels up"); + toolTip1.SetToolTip(btnShiftUp, "Shift pixels up (Ctrl+Up)"); btnShiftUp.UseVisualStyleBackColor = true; btnShiftUp.Click += btnShiftUp_Click; // // btnShiftRight // btnShiftRight.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + btnShiftRight.Image = Properties.Resources.z_right; btnShiftRight.Location = new System.Drawing.Point(92, 51); btnShiftRight.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); btnShiftRight.Name = "btnShiftRight"; btnShiftRight.Size = new System.Drawing.Size(35, 35); btnShiftRight.TabIndex = 1; - btnShiftRight.Text = "▶"; - toolTip1.SetToolTip(btnShiftRight, "Shift pixels right"); + toolTip1.SetToolTip(btnShiftRight, "Shift pixels right (Ctrl+Right)"); btnShiftRight.UseVisualStyleBackColor = true; btnShiftRight.Click += btnShiftRight_Click; // // btnShiftLeft // btnShiftLeft.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + btnShiftLeft.Image = Properties.Resources.z_left; btnShiftLeft.Location = new System.Drawing.Point(8, 51); btnShiftLeft.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); btnShiftLeft.Name = "btnShiftLeft"; btnShiftLeft.Size = new System.Drawing.Size(35, 35); btnShiftLeft.TabIndex = 0; - btnShiftLeft.Text = "◀"; - toolTip1.SetToolTip(btnShiftLeft, "Shift pixels left"); + toolTip1.SetToolTip(btnShiftLeft, "Shift pixels left (Ctrl+Left)"); btnShiftLeft.UseVisualStyleBackColor = true; btnShiftLeft.Click += btnShiftLeft_Click; // @@ -374,7 +374,7 @@ btnExport.Text = " Export"; btnExport.TextAlign = System.Drawing.ContentAlignment.MiddleRight; btnExport.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; - toolTip1.SetToolTip(btnExport, "Configure and export data"); + toolTip1.SetToolTip(btnExport, "Configure and export data (Ctrl+E)"); btnExport.UseVisualStyleBackColor = true; btnExport.Click += Export_Click; // @@ -491,7 +491,7 @@ btnApply.Text = " Apply"; btnApply.TextAlign = System.Drawing.ContentAlignment.MiddleRight; btnApply.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; - toolTip1.SetToolTip(btnApply, "Apply changes made to the symbol"); + toolTip1.SetToolTip(btnApply, "Apply changes made to the symbol (Ctrl+Space)"); btnApply.UseVisualStyleBackColor = true; btnApply.Click += button2_Click; // @@ -1065,7 +1065,7 @@ chkRectSelect.Text = " Select"; chkRectSelect.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; chkRectSelect.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; - toolTip1.SetToolTip(chkRectSelect, "Turn on/off rectangle selection"); + toolTip1.SetToolTip(chkRectSelect, "Turn on/off rectangle selection (Ctrl+R)"); chkRectSelect.UseVisualStyleBackColor = true; chkRectSelect.CheckedChanged += chkRectSelect_CheckedChanged; // @@ -1078,7 +1078,7 @@ nudBrush.Name = "nudBrush"; nudBrush.Size = new System.Drawing.Size(47, 23); nudBrush.TabIndex = 24; - toolTip1.SetToolTip(nudBrush, "Symbol height"); + toolTip1.SetToolTip(nudBrush, "Symbol height (Alt+Scroll)"); nudBrush.Value = new decimal(new int[] { 1, 0, 0, 0 }); nudBrush.ValueChanged += nudBrush_ValueChanged; // @@ -1110,9 +1110,9 @@ lblSelection.Location = new System.Drawing.Point(5, 84); lblSelection.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); lblSelection.Name = "lblSelection"; - lblSelection.Size = new System.Drawing.Size(30, 15); + lblSelection.Size = new System.Drawing.Size(32, 15); lblSelection.TabIndex = 24; - lblSelection.Text = "W,H"; + lblSelection.Text = "WxH"; lblSelection.TextAlign = System.Drawing.ContentAlignment.TopRight; lblSelection.Visible = false; // diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index 9da77c4..d735281 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.6"; + public const string version = "2.7"; public string prjName = "Untitled"; public string prjFileName = ""; public int codepage = 1251; @@ -83,7 +83,7 @@ namespace McBitFont { } private void UpdateSelectionLabel(int width, int height) { - lblSelection.Text = width.ToString() + ',' + height.ToString(); + lblSelection.Text = width.ToString() + 'x' + height.ToString(); } public void SetModified(bool modif = true, bool prj = false) { @@ -346,7 +346,7 @@ namespace McBitFont { vScroll.Enabled = true; } - dotPanel.Cursor = McCursor.GetCursor((int)nudBrush.Value, cellSize, gap); + if (!chkRectSelect.Checked) dotPanel.Cursor = McCursor.GetCursor((int)nudBrush.Value, cellSize, gap); dotPanel.Refresh(); } @@ -1394,6 +1394,10 @@ namespace McBitFont { private void chkRectSelect_CheckedChanged(object sender, EventArgs e) { lblSelection.Visible = lblSelectionLabel.Visible = chkRectSelect.Checked; selectAllToolStripMenuItem.Enabled = chkRectSelect.Checked; + + if (chkRectSelect.Checked) dotPanel.Cursor = McCursor.GetCursorSelect(); + else dotPanel.Cursor = McCursor.GetCursor((int)nudBrush.Value, cellSize, gap); + dotPanel.Refresh(); } @@ -1688,7 +1692,7 @@ namespace McBitFont { } private void nudBrush_ValueChanged(object sender, EventArgs e) { - dotPanel.Cursor = McCursor.GetCursor((int)nudBrush.Value, cellSize, gap); + if (!chkRectSelect.Checked) dotPanel.Cursor = McCursor.GetCursor((int)nudBrush.Value, cellSize, gap); } } } diff --git a/McBitFont/McBitFont.csproj b/McBitFont/McBitFont.csproj index ff2d703..4034c37 100644 --- a/McBitFont/McBitFont.csproj +++ b/McBitFont/McBitFont.csproj @@ -20,9 +20,9 @@ true true icon_64.ico - 2.6.0.0 - 2.6.0.0 - $(VersionPrefix)2.6.0 + 2.7.0.0 + 2.7.0.0 + $(VersionPrefix)2.7.0 Anton Mukhin diff --git a/McBitFont/McCursor.cs b/McBitFont/McCursor.cs index c253520..a2cb6e4 100644 --- a/McBitFont/McCursor.cs +++ b/McBitFont/McCursor.cs @@ -4,6 +4,7 @@ using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.Linq; +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; @@ -101,5 +102,30 @@ namespace McBitFont { return CreateCursorNoResize(bmp, cellSize / 2, cellSize / 2); } + public static Cursor GetCursorSelect() { + Point[] arrow = { new(1, 1), new(12, 12), new(11, 13), new(6, 13), new(2, 17), new(1, 16) }; + Point[] corner1 = { new(13, 6), new(20, 6), new(20, 13), new(17, 13), new(17, 9), new(13, 9) }; + Point[] corner2 = { new(17, 16), new(20, 16), new(20, 23), new(13, 23), new(13, 20), new(17, 20) }; + Point[] corner3 = { new(3, 16), new(6, 16), new(6, 20), new(10, 20), new(10, 23), new(3, 23) }; + Point[] corner4 = { new(6, 6), new(10, 6), new(10, 9), new(6, 9) }; + + Bitmap bmp = new(21, 24); + Pen pb = new(Color.Black, 1); + SolidBrush bw = new (Color.White); + using (Graphics g = Graphics.FromImage(bmp)) { + g.FillPolygon(bw, corner1); + g.DrawPolygon(pb, corner1); + g.FillPolygon(bw, corner2); + g.DrawPolygon(pb, corner2); + g.FillPolygon(bw, corner3); + g.DrawPolygon(pb, corner3); + g.FillPolygon(bw, corner4); + g.DrawPolygon(pb, corner4); + g.FillPolygon(bw, arrow); + g.DrawPolygon(pb, arrow); + } + return CreateCursorNoResize(bmp, 1, 1); + } + } } diff --git a/TODO.txt b/TODO.txt index 39556bb..5ec0a7a 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,8 +1,10 @@ Application: - Consider migrating to WPF in order to make DPI aware UI -- Cursor for rectangular selection tool +V Cursor for rectangular selection tool +V Icons for tool buttons +V Tooltips now has keyboard shortcuts info Functionality: Bugs: -- Fix selection info: change comma to x +V Fix selection info: change comma to x diff --git a/examples/SelectionCursor.mbfont b/examples/SelectionCursor.mbfont new file mode 100644 index 0000000..dcd90e2 Binary files /dev/null and b/examples/SelectionCursor.mbfont differ