添加项目文件。
This commit is contained in:
145
MetroGauges/Controls/Table/Row.cs
Normal file
145
MetroGauges/Controls/Table/Row.cs
Normal file
@@ -0,0 +1,145 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace MetroGauges.Controls
|
||||
{
|
||||
public class Row
|
||||
{
|
||||
private List<Cell> cells = new List<Cell>();
|
||||
|
||||
public int Height { get; set; }
|
||||
|
||||
public List<Cell> Cells { get { return cells; } }
|
||||
|
||||
public Point StartPoint { get; set; }
|
||||
|
||||
public OutTable Table { get; set; }
|
||||
|
||||
public Row(int col, Canvas canvas)
|
||||
{
|
||||
Height = 30;
|
||||
for (int i = 0; i < col; i++)
|
||||
{
|
||||
bool isLastCell = false;
|
||||
if (i == col - 1)
|
||||
{
|
||||
isLastCell = true;
|
||||
}
|
||||
Cell cell = new Cell() { Index = i, Height=this.Height,IsLastCell= isLastCell, Row=this };
|
||||
cell.DrawPanel = canvas;
|
||||
cells.Add(cell);
|
||||
}
|
||||
}
|
||||
|
||||
public void IntiCells()
|
||||
{
|
||||
for (int i = 0; i < cells.Count; i++)
|
||||
{
|
||||
cells[i].StartPoint = new Point() { X = StartPoint.X+cells[i].Width*i , Y = StartPoint.Y };
|
||||
cells[i].Draw();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public class Cell
|
||||
{
|
||||
public int Width { get; set; }
|
||||
|
||||
public int Height { get; set; }
|
||||
|
||||
public string Text { get; set; }
|
||||
|
||||
public bool IsLastCell { get; set; }
|
||||
|
||||
public int Index { get; set; }
|
||||
|
||||
public Point StartPoint { get; set; }
|
||||
|
||||
public Canvas DrawPanel { get; set; }
|
||||
|
||||
public Row Row { get; set; }
|
||||
|
||||
public Cell()
|
||||
{
|
||||
Width = 60;
|
||||
}
|
||||
|
||||
public void Draw()
|
||||
{
|
||||
int strokeThickness = 1;
|
||||
Line line =new Line() { Stroke= Brushes.White, StrokeThickness= strokeThickness };
|
||||
//上
|
||||
line.X1 = this.StartPoint.X;
|
||||
line.Y1 = this.StartPoint.Y;
|
||||
line.X2 = this.StartPoint.X + this.Width;
|
||||
line.Y2 = this.StartPoint.Y;
|
||||
DrawPanel.Children.Add(line);
|
||||
//左
|
||||
Line line1 = new Line() { Stroke = Brushes.White, StrokeThickness = strokeThickness };
|
||||
line1.X1 = this.StartPoint.X;
|
||||
line1.Y1 = this.StartPoint.Y;
|
||||
line1.X2 = this.StartPoint.X;
|
||||
line1.Y2 = this.StartPoint.Y+this.Height;
|
||||
DrawPanel.Children.Add(line1);
|
||||
//下
|
||||
Line line2 = new Line() { Stroke = Brushes.White, StrokeThickness = strokeThickness };
|
||||
line2.X1 = this.StartPoint.X;
|
||||
line2.Y1 = this.StartPoint.Y + this.Height;
|
||||
line2.X2 = this.StartPoint.X + this.Width;
|
||||
line2.Y2 = this.StartPoint.Y + this.Height;
|
||||
DrawPanel.Children.Add(line2);
|
||||
|
||||
if (this.Row.Table.DrawShaps != null)
|
||||
{
|
||||
this.Row.Table.DrawShaps.Add(line);
|
||||
this.Row.Table.DrawShaps.Add(line1);
|
||||
this.Row.Table.DrawShaps.Add(line2);
|
||||
}
|
||||
|
||||
//最后一列 右
|
||||
if (IsLastCell)
|
||||
{
|
||||
Line line3 = new Line() { Stroke = Brushes.White, StrokeThickness = strokeThickness };
|
||||
line3.X1 = this.StartPoint.X + this.Width;
|
||||
line3.Y1 = this.StartPoint.Y ;
|
||||
line3.X2 = this.StartPoint.X + this.Width;
|
||||
line3.Y2 = this.StartPoint.Y + this.Height;
|
||||
DrawPanel.Children.Add(line3);
|
||||
if (this.Row.Table.DrawShaps != null)
|
||||
{
|
||||
this.Row.Table.DrawShaps.Add(line3);
|
||||
}
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(this.Text))
|
||||
{
|
||||
TextBlock textBlock = new TextBlock();
|
||||
textBlock.Text = this.Text;
|
||||
textBlock.Foreground = new SolidColorBrush(Colors.White);
|
||||
|
||||
Point point = new Point() { X = this.StartPoint.X + 10, Y = this.StartPoint.Y + (this.Height / 2 + 8) };
|
||||
textBlock.DataContext = point;
|
||||
|
||||
Canvas.SetLeft(textBlock, this.StartPoint.X + 10);
|
||||
Canvas.SetTop(textBlock, this.StartPoint.Y + this.Height / 2 - 8);
|
||||
|
||||
DrawPanel.Children.Add(textBlock);
|
||||
if (this.Row.Table.DrawShaps != null)
|
||||
{
|
||||
this.Row.Table.DrawShaps.Add(textBlock);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
49
MetroGauges/Controls/Table/Table.cs
Normal file
49
MetroGauges/Controls/Table/Table.cs
Normal file
@@ -0,0 +1,49 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace MetroGauges.Controls
|
||||
{
|
||||
public class OutTable
|
||||
{
|
||||
private Canvas m_Canvas;
|
||||
private List<Row> rows = new List<Row>();
|
||||
|
||||
public List<FrameworkElement> DrawShaps { get; set; }
|
||||
|
||||
public int Cols { get; set; }
|
||||
|
||||
public List<Row> Rows { get { return rows; } }
|
||||
|
||||
public Point StartPoint { get; set; }
|
||||
|
||||
public OutTable(Canvas canvas)
|
||||
{
|
||||
m_Canvas = canvas;
|
||||
}
|
||||
|
||||
|
||||
public Row NewRow()
|
||||
{
|
||||
Row row = new Row(Cols, m_Canvas) { Table=this };
|
||||
rows.Add(row);
|
||||
return row;
|
||||
}
|
||||
|
||||
public void DrawTable()
|
||||
{
|
||||
for (int i = 0; i < this.rows.Count; i++)
|
||||
{
|
||||
this.rows[i].StartPoint = new Point() { X = this.StartPoint.X, Y = this.StartPoint.Y + this.rows[i].Height*i };
|
||||
this.rows[i].IntiCells();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user