0

我是编码初学者并尝试解决简单问题:

我有一个包含三列的列表,并试图访问存储在列表中的值。它没有给我答案......任何想法?谢谢

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());


    }
4

2 回答 2

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);
于 2012-11-19T23:05:11.003 回答
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 );
    }
}
于 2012-11-20T00:16:15.743 回答