释放资源两种方式:using()
dispose()
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
namespace WindowsApplication3
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
public partial class Form1 : Form
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
public Form1()
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
InitializeComponent();
panel1.BackColor = Color.Transparent;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//文件名字,文件路径
private string filename;
private string filepath;
//panel2底色,panel1,drawstring,drawimage,panel3画,线,圆,矩形
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
openFileDialog1.FileName = "*.sdg";
openFileDialog1.Filter = "接线图(*.sdg)|*.sdg";
openFileDialog1.RestoreDirectory = true;
openFileDialog1.FilterIndex = 1;
//openFileDialog1.ShowDialog();
if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
FileStream fs = new FileStream(openFileDialog1.FileName, FileMode.Open, FileAccess.Read);
FileInfo info = new FileInfo(openFileDialog1.FileName);
filepath = info.ToString();
filename = filepath.Substring(filepath.Length - 3, 3);
panel1.Refresh();
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
private void panel1_Paint(object sender, PaintEventArgs e)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if (filename == "SDG")
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
FileStream fs = new FileStream(openFileDialog1.FileName, FileMode.Open, FileAccess.Read);
FileInfo info = new FileInfo(openFileDialog1.FileName);
filepath = info.ToString();
BinaryReader reader = new BinaryReader(fs);
byte[] by = new byte[info.Length];
reader.Read(by, 0, by.Length);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//文件以sdg开头
if (by[0] == 83 && by[1] == 68 && by[2] == 71)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
//底色
panel2.BackColor = Color.FromArgb(by[61], by[60], by[59]);
for (int i = 0; i < by.Length; i++)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
//画线
if (by[i] == 24 && by[i + 1] == 76 && by[i + 13] == 0)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
//Graphics gs = panel3.CreateGraphics();
Graphics gs = e.Graphics;
// 取颜色
if (by[i + 15] == 255 && by[i + 16] == 255 && by[i + 17] == 255)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Point p = new Point(by[i + 5] * 256 + by[i + 6] + by[i - 31] * 256 + by[i - 30] - 4, by[i + 7] * 256 + by[i + 8] + by[i - 29] * 256 + by[i - 28] - 4);
Image image = global::WindowsApplication3.Properties.Resources.接地线;
gs.DrawImage(image ,p );
//lb.Click += new System.EventHandler(lb_Click);
}
else
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Pen p = new Pen(Color.FromArgb(by[i + 17], by[i + 16], by[i + 15]));
//笔的宽度
p.Width = by[i + 20];
//画线,起点坐标,终点坐标,没有考虑线的粗细,缺少线的mode,style
gs.DrawLine(p, by[i + 5] * 256 + by[i + 6] + by[i - 31] * 256 + by[i - 30], by[i + 7] * 256 + by[i + 8] + by[i - 29] * 256 + by[i - 28], by[i + 9] * 256 + by[i + 10] + by[i - 31] * 256 + by[i - 30], by[i + 11] * 256 + by[i + 12] + by[i - 29] * 256 + by[i - 28]);
//MessageBox.Show(by[i+6].ToString ());
}
}
//画圆
if (by[i] == 23 && by[i + 1] == 67 && by[i + 2] == 105)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Graphics gs = e.Graphics;
Pen p = new Pen(Color.FromArgb(by[i + 16], by[i + 15], by[i + 14]));
p.Width = by[i + 19];
//圆
gs.DrawEllipse(p, by[i + 7] * 256 + by[i + 8] + by[i - 31] * 256 + by[i - 30] - (by[i + 11] * 256 + by[i + 12]), by[i + 9] * 256 + by[i + 10] + by[i - 29] * 256 + by[i - 28] - (by[i + 11] * 256 + by[i + 12]), (by[i + 11] * 256 + by[i + 12]) * 2, (by[i + 11] * 256 + by[i + 12]) * 2);
//MessageBox.Show(by[i + 8].ToString());
}
//画矩形
if (by[i] == 24 && by[i + 1] == 76 && by[i + 13] == 1)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
//添加柜门
if (by[i + 15] == 128 && by[i + 16] == 128 && by[i + 17] == 128)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Graphics gs = e.Graphics;
Point p = new Point(by[i + 5] * 256 + by[i + 6] + by[i - 31] * 256 + by[i - 30], by[i + 7] * 256 + by[i + 8] + by[i - 29] * 256 + by[i - 28]);
Image image = global::WindowsApplication3.Properties.Resources.柜门 ;
gs.DrawImage(image, p);
//lb.Click += new System.EventHandler(lb_Click);
}
//添加断路器
if (by[i + 15] == 0 && by[i + 16] == 255 && by[i + 17] == 255)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Graphics gs = e.Graphics;
Point p = new Point(by[i + 5] * 256 + by[i + 6] + by[i - 31] * 256 + by[i - 30], by[i + 7] * 256 + by[i + 8] + by[i - 29] * 256 + by[i - 28]);
Image image = global::WindowsApplication3.Properties.Resources.断路器 ;
gs.DrawImage(image, p);
//lb.Click += new System.EventHandler(lb_Click);
}
//添加刀闸
if (by[i + 15] == 255 && by[i + 16] == 255 && by[i + 17] == 255)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
//添加竖刀闸
if ((by[i + 9] * 256 + by[i + 10] + by[i - 31] * 256 + by[i - 30] - (by[i + 5] * 256 + by[i + 6] + by[i - 31] * 256 + by[i - 30])) == 30)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Graphics gs = e.Graphics;
Point p = new Point(by[i + 5] * 256 + by[i + 6] + by[i - 31] * 256 + by[i - 30], by[i + 7] * 256 + by[i + 8] + by[i - 29] * 256 + by[i - 28] + 10);
Image image = global::WindowsApplication3.Properties.Resources.横刀闸 ;
gs.DrawImage(image, p);
//lb.Click += new System.EventHandler(lb_Click);
}
//添加横刀闸
if ((by[i + 9] * 256 + by[i + 10] + by[i - 31] * 256 + by[i - 30] - (by[i + 5] * 256 + by[i + 6] + by[i - 31] * 256 + by[i - 30])) == 25)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Graphics gs = e.Graphics;
Point p = new Point(by[i + 5] * 256 + by[i + 6] + by[i - 31] * 256 + by[i - 30] + 10, by[i + 7] * 256 + by[i + 8] + by[i - 29] * 256 + by[i - 28]);
Image image = global::WindowsApplication3.Properties.Resources.竖刀闸;
gs.DrawImage(image, p);
//lb.Click += new System.EventHandler(lb_Click);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//else
//{
// Graphics gs = panel1.CreateGraphics();
// // 取颜色
// Pen p = new Pen(Color.FromArgb(by[i + 17], by[i + 16], by[i + 15]));
// //笔的宽度
// p.Width = by[i + 20];
// //画线,起点坐标,终点坐标,没有考虑线的粗细,缺少线的mode,style
// gs.DrawRectangle(p, by[i + 5] * 256 + by[i + 6] + by[i - 31] * 256 + by[i - 30], by[i + 7] * 256 + by[i + 8] + by[i - 29] * 256 + by[i - 28], by[i + 9] * 256 + by[i + 10] + by[i - 31] * 256 + by[i - 30] - (by[i + 5] * 256 + by[i + 6] + by[i - 31] * 256 + by[i - 30]), by[i + 11] * 256 + by[i + 12] + by[i - 29] * 256 + by[i - 28] - (by[i + 7] * 256 + by[i + 8] + by[i - 29] * 256 + by[i - 28]));
// // MessageBox.Show(by[i-47].ToString());
//}
//单击label控件
//lb.Click += new System.EventHandler(lb_Click);
}
}
//文本,具体位置已经取出,用的gb2312编码方式.
if (by[i] == 84 && by[i + 1] == 101 && by[i + 2] == 120 && by[i + 3] == 116)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
byte[] bt = new byte[50];
string text;
int size;
size = by[i + 10] * 256 + by[i + 11];
Font drawFont = new Font("宋体", size);
SolidBrush drawBrush = new SolidBrush(Color.FromArgb(by[i + 15], by[i + 14], by[i + 13]));
PointF drawPoint = new PointF(by[i + 4] * 256 + by[i + 5] + by[i - 32] * 256 + by[i - 31], by[i + 6] * 256 + by[i + 7] + by[i - 30] * 256 + by[i - 29]);
for (int j = 0; j < by[i + 18]; j++, i++)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
bt[j] = by[i + 19];
}
text = Encoding.GetEncoding("gb2312").GetString(bt);
e.Graphics.DrawString(text,drawFont ,drawBrush ,drawPoint );
}
}
}
fs.Close();
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Application.Exit();
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
private void panel1_MouseDown(object sender, MouseEventArgs e)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if (e.Button == MouseButtons.Left)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if(e.X >16&&e.X <30&&e.Y>17&&e.Y <40)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//if (e.X > (by[i + 5] * 256 + by[i + 6] + by[i - 31] * 256 + by[i - 30]) && e.X < (by[i + 5] * 256 + by[i + 6] + by[i - 31] * 256 + by[i - 30]) + 12)
// MessageBox.Show("ddd");
MessageBox.Show(e.X.ToString());
//if()
}
}
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)