我想要讀取文本上的坐標點,然后在表單上以點的影像顯示出來,代碼如下(這個可以復制直接除錯的):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace 讀取坐標文本并顯示點圖
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public class point //定義一個類,并且具有x,y的屬性
{
public string name { get; set; }
public double x { get; set; }
public double y { get; set; }
public point() //定義一個無參建構式
{
}
public point(string name ,double x,double y) //定義一個建構式,用來存盤傳入的名字,x,y的值
{
this.name = name;
this.x = x;
this.y = y;
}
public static List<point> read(string path) //定義了一個關于point的list的方法,此方法會做出如下的行為:讀取TXT中的坐標資料
{
//讀取坐標文本的代碼,利用streamread的讀取流
List<point> result = new List<point>();//定義了一個關于list<point>類的一個物件result
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
using(StreamReader sr=new StreamReader(fs))//檔案讀取的路徑
{
int i=0;//定義一個i來控制資料存入list<point>中
//逐行讀取,用執行while回圈操作
string strline = sr.ReadLine();
while(strline!=null)
{
string[] line=strline.Split(',');//定義一個line的陣列,表示每一行用逗號分開,并且line的每個不同的索引表示不同的x,y
point pt = new point((++i).ToString(), double.Parse(line[0]), double.Parse(line[1]));//實體化point的一個物件pt來表示 ,將讀取的資料存入建構式
result.Add(pt);//將pt中的資料存入result中
}
}
return result;//回傳已經存好的list<point>的result的資料
}
public static object List { get; set; }
}
private void button1_Click(object sender, EventArgs e)
{
////point.read(@"E:\c#\新建文本檔案.txt");//呼叫point類中的read方法
}
Bitmap bmp;
private void Form1_Load(object sender, EventArgs e)
{
bmp = new Bitmap(this.ClientRectangle.Width,this.ClientRectangle.Height);
Graphics g = Graphics.FromImage(bmp);
point.read(@"E:\c#\新建文本檔案.txt");//呼叫point類中的read方法
point p = new point();
int i, j;
int w = bmp.Width;
int h = bmp.Height;
int interval = 5;//每隔5個像素點設定一個黑顏色點生成圖片
for (i = 0; i < w; i += interval)
{
for (j = 0; j < h; j += interval)
{
bmp.SetPixel(Convert.ToInt32(p.x), Convert.ToInt32(p.y), Color.Black);
}
}
}
private void button1_Paint(object sender, PaintEventArgs e)
{
//point.read(@"E:\c#\新建文本檔案.txt");//呼叫point類中的read方法
//point p = new point();
//int i, j;
//int w = bmp.Width;
//int h = bmp.Height;
//int interval = 5;//每隔5個像素點設定一個黑顏色點生成圖片
//for (i = 0; i < w; i += interval)
//{
// for (j = 0; j < h; j += interval)
// {
// bmp.SetPixel(Convert.ToInt32(p.x), Convert.ToInt32(p.y), Color.Black);
// }
//}
Graphics gg = e.Graphics;
gg.DrawImage(bmp,new Rectangle(0,0,this.ClientRectangle.Width,this.ClientRectangle.Height));
}
}
}