mirror of
https://github.com/jie65535/CodeMatrix.git
synced 2025-07-31 18:19:13 +08:00
增加 代码队列渲染部分
This commit is contained in:
parent
532909ed1a
commit
4b0101d912
2
CodeMatrix/FormMain.Designer.cs
generated
2
CodeMatrix/FormMain.Designer.cs
generated
@ -39,7 +39,9 @@ namespace CodeMatrix
|
|||||||
this.BackColor = System.Drawing.Color.White;
|
this.BackColor = System.Drawing.Color.White;
|
||||||
this.ClientSize = new System.Drawing.Size(672, 323);
|
this.ClientSize = new System.Drawing.Size(672, 323);
|
||||||
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||||
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||||
this.Margin = new System.Windows.Forms.Padding(0);
|
this.Margin = new System.Windows.Forms.Padding(0);
|
||||||
|
this.MaximizeBox = false;
|
||||||
this.Name = "FormMain";
|
this.Name = "FormMain";
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||||
this.Text = "Code Matrix";
|
this.Text = "Code Matrix";
|
||||||
|
@ -16,9 +16,17 @@ namespace CodeMatrix
|
|||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
var matrix = new UCCodeMatrix();
|
BackColor = Styles.Default.BackColor;
|
||||||
Controls.Add(matrix);
|
|
||||||
ClientSize = matrix.Size;
|
var codeMatrix = new UCCodeMatrix();
|
||||||
|
var codeQueue = new UCCodeQueue();
|
||||||
|
codeQueue.Location = new Point(codeMatrix.Size.Width, 0);
|
||||||
|
Controls.Add(codeMatrix);
|
||||||
|
Controls.Add(codeQueue);
|
||||||
|
|
||||||
|
var size = codeMatrix.Size;
|
||||||
|
size.Width += codeQueue.Width;
|
||||||
|
ClientSize = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -8,23 +8,43 @@ namespace CodeMatrix
|
|||||||
|
|
||||||
public Styles()
|
public Styles()
|
||||||
{
|
{
|
||||||
Font = new Font("微软雅黑", 14);
|
CodeFontA = new Font("微软雅黑", 14);
|
||||||
|
CodeFontB = new Font("微软雅黑", 12);
|
||||||
BackColor = Color.FromArgb(18, 13, 25);
|
BackColor = Color.FromArgb(18, 13, 25);
|
||||||
ForeColor = Color.FromArgb(208, 236, 92);
|
CodeColor = Color.FromArgb(208, 236, 92);
|
||||||
CodeBrush = new SolidBrush(Color.FromArgb(208, 236, 92));
|
SelectColor = Color.FromArgb(109, 232, 228);
|
||||||
|
CodeBrush = new SolidBrush(CodeColor);
|
||||||
|
SelectBrush = new SolidBrush(SelectColor);
|
||||||
EmptyCellBrush = new SolidBrush(Color.FromArgb(65, 52, 76));
|
EmptyCellBrush = new SolidBrush(Color.FromArgb(65, 52, 76));
|
||||||
DefaultLineBackColor = new SolidBrush(Color.FromArgb(42, 43, 60));
|
DefaultLineBackColor = new SolidBrush(Color.FromArgb(42, 43, 60));
|
||||||
SelectLineBackColor = new SolidBrush(Color.FromArgb(32, 31, 28));
|
SelectLineBackColor = new SolidBrush(Color.FromArgb(32, 31, 28));
|
||||||
SelectCellBorderPen = new Pen(Color.FromArgb(109, 232, 228), 1);
|
SelectCellBorderPen = new Pen(SelectColor, 1);
|
||||||
|
EmptyCellBorderPen = new Pen(Color.FromArgb(116, 144, 0), 1)
|
||||||
|
{
|
||||||
|
DashStyle = System.Drawing.Drawing2D.DashStyle.Custom,
|
||||||
|
DashPattern = new float[2] { 4, 4 }
|
||||||
|
};
|
||||||
|
SelectedCellBorderPen = new Pen(CodeColor, 1)
|
||||||
|
{
|
||||||
|
DashStyle = System.Drawing.Drawing2D.DashStyle.Custom,
|
||||||
|
DashPattern = new float[2] { 3, 3 }
|
||||||
|
};
|
||||||
|
DefaultBorderPen = new Pen(CodeColor, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Font Font { get; set; }
|
public Font CodeFontA { get; set; }
|
||||||
|
public Font CodeFontB { get; set; }
|
||||||
public Color BackColor { get; set; }
|
public Color BackColor { get; set; }
|
||||||
public Color ForeColor { get; set; }
|
public Color CodeColor { get; set; }
|
||||||
|
public Color SelectColor { get; set; }
|
||||||
public Brush CodeBrush { get; set; }
|
public Brush CodeBrush { get; set; }
|
||||||
|
public Brush SelectBrush { get; set; }
|
||||||
public Brush EmptyCellBrush { get; set; }
|
public Brush EmptyCellBrush { get; set; }
|
||||||
public Brush DefaultLineBackColor { get; set; }
|
public Brush DefaultLineBackColor { get; set; }
|
||||||
public Brush SelectLineBackColor { get; set; }
|
public Brush SelectLineBackColor { get; set; }
|
||||||
public Pen SelectCellBorderPen { get; set; }
|
public Pen SelectCellBorderPen { get; set; }
|
||||||
|
public Pen EmptyCellBorderPen { get; set; }
|
||||||
|
public Pen SelectedCellBorderPen { get; set; }
|
||||||
|
public Pen DefaultBorderPen { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -44,8 +44,8 @@ namespace CodeMatrix
|
|||||||
|
|
||||||
private void InitData()
|
private void InitData()
|
||||||
{
|
{
|
||||||
Rows = 9;
|
Rows = 7;
|
||||||
Columns = 16;
|
Columns = 7;
|
||||||
CellSize = new SizeF(40, 40);
|
CellSize = new SizeF(40, 40);
|
||||||
_currDir = Directions.Horizontal;
|
_currDir = Directions.Horizontal;
|
||||||
HoverPoint = new Point(-1, -1);
|
HoverPoint = new Point(-1, -1);
|
||||||
@ -57,9 +57,9 @@ namespace CodeMatrix
|
|||||||
Margin = Padding.Empty;
|
Margin = Padding.Empty;
|
||||||
DoubleBuffered = true;
|
DoubleBuffered = true;
|
||||||
|
|
||||||
Font = Styles.Default.Font;
|
Font = Styles.Default.CodeFontA;
|
||||||
BackColor = Styles.Default.BackColor;
|
BackColor = Styles.Default.BackColor;
|
||||||
ForeColor = Styles.Default.ForeColor;
|
ForeColor = Styles.Default.CodeColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool _IsLoaded;
|
private bool _IsLoaded;
|
||||||
@ -137,7 +137,10 @@ namespace CodeMatrix
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
brush = Styles.Default.CodeBrush;
|
if (HoverPoint.X == col && HoverPoint.Y == row)
|
||||||
|
brush = Styles.Default.SelectBrush;
|
||||||
|
else
|
||||||
|
brush = Styles.Default.CodeBrush;
|
||||||
code = Matrix[col, row].ToString("X2");
|
code = Matrix[col, row].ToString("X2");
|
||||||
}
|
}
|
||||||
var codeSize = e.Graphics.MeasureString(code, Font);
|
var codeSize = e.Graphics.MeasureString(code, Font);
|
||||||
@ -147,6 +150,7 @@ namespace CodeMatrix
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
e.Graphics.DrawRectangle(Styles.Default.DefaultBorderPen, 0, 0, Width - 1, Height - 1);
|
||||||
//e.Graphics.DrawString(_paintCount.ToString(), Font, Styles.Default.CodeBrush, 0, 0);
|
//e.Graphics.DrawString(_paintCount.ToString(), Font, Styles.Default.CodeBrush, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,8 +10,9 @@ namespace CodeMatrix
|
|||||||
{
|
{
|
||||||
class UCCodeQueue : Control
|
class UCCodeQueue : Control
|
||||||
{
|
{
|
||||||
public SizeF CellSize { get; private set; }
|
public Size CellSize { get; private set; }
|
||||||
public Padding CellMargin { get; set; }
|
public Padding CellMargin { get; set; }
|
||||||
|
public byte HoverCode { get; set; }
|
||||||
public int BufferSize { get; set; }
|
public int BufferSize { get; set; }
|
||||||
public int CurrIndex { get; private set; }
|
public int CurrIndex { get; private set; }
|
||||||
public byte[] Buffer { get; } = new byte[32];
|
public byte[] Buffer { get; } = new byte[32];
|
||||||
@ -24,25 +25,71 @@ namespace CodeMatrix
|
|||||||
|
|
||||||
private void InitData()
|
private void InitData()
|
||||||
{
|
{
|
||||||
CellSize = new SizeF(40, 40);
|
CellSize = new Size(25, 25);
|
||||||
BufferSize = 7;
|
BufferSize = 7;
|
||||||
CurrIndex = 0;
|
|
||||||
|
CurrIndex = 4;
|
||||||
|
HoverCode = 0x55;
|
||||||
|
Buffer[0] = 0xE9;
|
||||||
|
Buffer[1] = 0x55;
|
||||||
|
Buffer[2] = 0x1C;
|
||||||
|
Buffer[3] = 0xBD;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitComponent()
|
private void InitComponent()
|
||||||
{
|
{
|
||||||
Margin = Padding.Empty;
|
Margin = Padding.Empty;
|
||||||
|
Padding = new Padding(10);
|
||||||
CellMargin = new Padding(3);
|
CellMargin = new Padding(3);
|
||||||
MinimumSize = new Size((int)((CellSize.Width + CellMargin.Horizontal) * BufferSize), (int)(CellSize.Height + CellMargin.Vertical));
|
MinimumSize = new Size((CellSize.Width + CellMargin.Horizontal) * BufferSize + Padding.Horizontal,
|
||||||
|
CellSize.Height + CellMargin.Vertical + Padding.Vertical);
|
||||||
DoubleBuffered = true;
|
DoubleBuffered = true;
|
||||||
|
|
||||||
Font = Styles.Default.Font;
|
Font = Styles.Default.CodeFontB;
|
||||||
BackColor = Styles.Default.BackColor;
|
BackColor = Styles.Default.BackColor;
|
||||||
ForeColor = Styles.Default.ForeColor;
|
ForeColor = Styles.Default.CodeColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnPaint(PaintEventArgs e)
|
protected override void OnPaint(PaintEventArgs e)
|
||||||
{
|
{
|
||||||
|
var cellOffset = new Rectangle(Padding.Left + CellMargin.Left,
|
||||||
|
Padding.Top + CellMargin.Top,
|
||||||
|
CellSize.Width-1,
|
||||||
|
CellSize.Height-1);
|
||||||
|
var cellOffsetWidth = CellSize.Width + CellMargin.Horizontal;
|
||||||
|
int index = 0;
|
||||||
|
for (; index < CurrIndex; index++)
|
||||||
|
{
|
||||||
|
e.Graphics.DrawRectangle(Styles.Default.SelectedCellBorderPen, cellOffset);
|
||||||
|
var code = Buffer[index].ToString("X2");
|
||||||
|
var codeSize = e.Graphics.MeasureString(code, Font);
|
||||||
|
var codeOffset = new PointF((CellSize.Width-codeSize.Width)/2, (CellSize.Height-codeSize.Height)/2);
|
||||||
|
var codePoint = new PointF(codeOffset.X+cellOffset.X, codeOffset.Y+cellOffset.Y);
|
||||||
|
e.Graphics.DrawString(code, Font, Styles.Default.CodeBrush, codePoint);
|
||||||
|
cellOffset.X += cellOffsetWidth;
|
||||||
|
}
|
||||||
|
if (HoverCode > 0)
|
||||||
|
{
|
||||||
|
e.Graphics.DrawRectangle(Styles.Default.SelectCellBorderPen, cellOffset);
|
||||||
|
var code = HoverCode.ToString("X2");
|
||||||
|
var codeSize = e.Graphics.MeasureString(code, Font);
|
||||||
|
var codeOffset = new PointF((CellSize.Width-codeSize.Width)/2, (CellSize.Height-codeSize.Height)/2);
|
||||||
|
var codePoint = new PointF(codeOffset.X+cellOffset.X, codeOffset.Y+cellOffset.Y);
|
||||||
|
e.Graphics.DrawString(code, Font, Styles.Default.SelectBrush, codePoint);
|
||||||
|
|
||||||
|
|
||||||
|
cellOffset.X += cellOffsetWidth;
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
for (; index < BufferSize; index++)
|
||||||
|
{
|
||||||
|
e.Graphics.DrawRectangle(Styles.Default.EmptyCellBorderPen, cellOffset);
|
||||||
|
cellOffset.X += cellOffsetWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
e.Graphics.DrawRectangle(Styles.Default.DefaultBorderPen, 0, 0, Width - 1, Height - 1);
|
||||||
|
|
||||||
base.OnPaint(e);
|
base.OnPaint(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user