1.首先我们要载入map文件到界面,我这边使用的是C#,载入的文件格式就以最常见的TXT为例
private void panel1_Paint(object sender, PaintEventArgs e)
{
//panel1.DoubleBuffered = true;
if (bBinge == true)
{
try
{
// 读取TXT文件的所有行
string[] lines = File.ReadAllLines(filePath);
// 创建二维数组来存储字符
plcData.charArray = new char[lines.Length][];
// 把每一行的字符存储到二维数组中
for (int i = 0; i < lines.Length; i++)
{
plcData.charArray[i] = lines[i].ToCharArray();
}
}
catch (Exception ex)
{
// 处理异常,例如文件不存在或无法读取等
Console.WriteLine("An error occurred: " + ex.Message);
}
Graphics g = e.Graphics;
int cellSize = 20;//晶圆大小,20*20个像素
//int rows = 5;//5行
//int columns = 5;//5列
rectangles.Clear();
for (int i = 0; i < 15; i++)//行数循环
{
for (int j = 0; j < 30; j++)//列数循环
{
// 根据实际数据绘制晶圆图中的每个单元格
Rectangle cellRect = new Rectangle(j * cellSize, i * cellSize, cellSize, cellSize);
if (plcData.charArray[i][j] == '1')
g.FillRectangle(Brushes.White, cellRect); // 假设将BIN 1填充为白色
else
g.FillRectangle(Brushes.Black, cellRect); // 其余填充成黑色
g.DrawRectangle(Pens.Red, cellRect); // 绘制单元格边框
rectangles.Add(cellRect);
// 绘制具体内容,例如绘制晶圆图中的芯片信息
// 可以根据你的实际需求来绘制晶圆图中的内容
}
}
if (bFlag == true)
g.DrawRectangle(Pens.Green, selectedRectangle);//如果该芯片被鼠标选中,用绿色边框凸显
}
}
2,这个是用GDI在panel里绘制的效果,再用鼠标事件获取芯片的坐标,效果如下
3,这里只是演示一下思路,具体bin和对点,扫描这些功能,只要你能载入map文件,获取芯片坐标,那些就不成问题了