我是编码的初学者并试图解决简单的问题:
我有三列的列表,并尝试访问列表中存储的值。它没有给我答案......任何想法?感谢
private void btnImage1Load_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
pictureBox1.ImageLocation = openFileDialog1.FileName;
}
public class ListThreeColumns
{
public int XCoord { get; set; }
public int YCoord { get; set; }
public Color Color { get; set; }
}
private List<ListThreeColumns> GetPixels()
{
Bitmap picture = new Bitmap(pictureBox1.Image);
List<ListThreeColumns> colorList = new List<ListThreeColumns>
{
};
for (int y = 0; y < picture.Height; y++)
{
for (int x = 0; x < picture.Width; x++)
{
colorList.Add(new ListThreeColumns { XCoord = x, YCoord = y, Color = picture.GetPixel(x, y) });
}
}
return colorList;
}
private void btnScanPixels_Click(object sender, EventArgs e)
{
List<ListThreeColumns> seznamBarev = GetPixels();
MessageBox.Show(seznamBarev[6].ToString());
}
答案 0 :(得分:4)
在这一行:
MessageBox.Show(seznamBarev[6].ToString());
...您正在访问列表中的元素6,但只是在其上调用ToString
。因为你没有覆盖ListThreeElements
(顺便说一句,这个名字会更好地命名为Pixel
),这意味着结果不会特别有用。
你可以写:
ListThreeColumns pixel = seznamBarev[6];
MessageBox.Show(string.Format("{0}, {1} - {2}", pixel.X, pixel.Y, pixel.Color);
答案 1 :(得分:0)
你想做什么? 如果要以字符串形式显示每个项目,可以使用Jon方式。 但是最好将操作移到你的班级。 如果在ListThreeColumns类中重写'ToString()'方法,则代码可以正常工作,无需更改。
public class ListThreeColumns
{
public int XCoord { get; set; }
public int YCoord { get; set; }
public Color Color { get; set; }
public override ToString()
{
return string.Format("X={0}, Y={1}, Color=({2};{3};{4})",
this.XCoord , this.YCoord , Color.R,Color.G,Color.B );
}
}