一些有关C#泛型集合的问题

s929115127 2017-06-26 04:20:14
public struct Point
{
public int x; //点的横坐标
public int y; //点的纵坐标
public int red; //点的RGB值
public int blue;
public int green;
}
定义了一个关于点的结构体。算法是给平面上的圆进行填充。
1.如果每当我画一个点,若这个点为空白点,将点涂色。同时向list中添加这个点的信息,请问要如何添加?
2.当这个点为非空白点时,如何能找到这个点在list中的信息?
3.找到这个信息后要怎样才能去修改这个信息中的RGB值?

多谢各位了!
...全文
230 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
s929115127 2017-06-26
  • 打赏
  • 举报
回复
引用 8 楼 sj490790083 的回复:
[quote=引用 7 楼 s929115127 的回复:] [quote=引用 3 楼 sj490790083 的回复:] 1.如果每当我画一个点,若这个点为空白点,将点涂色。同时向list中添加这个点的信息,请问要如何添加? List<Point> lstPoints=new List<Point>(); lstPoints.Add(new Point(){x=??,y=??,red=??,blue=??,green=??}); 2.当这个点为非空白点时,如何能找到这个点在list中的信息? lstPoint.Where(p=>p.x==x&&p.y==y).FirstOrDefault();//根据x,y坐标找到对应点 3.找到这个信息后要怎样才能去修改这个信息中的RGB值? 根据上面找到的点直接修改字段值。
还有点小细节想麻烦您。 关于第二个问题: 因为list里面的point很多,这里是有个循环么?还是直接: if( lstPoint.Where(p=>p.x==x&&p.y==y)) { Red = p=>p.red; //这样可以获得这个点的颜色值么? Green = p=>p.Green; ... } 第3个问题中修改具体的代码是怎样的?因为刚刚接触,所以很多都不太懂。。。麻烦您了 还有一个问题是:因为最后我要用到list中的每一个点,我需要对其中的每个点进行遍历。因为没有具体的编号,所以请问要如何进行遍历? 麻烦了![/quote] lstPoint.Where(p=>p.x==x&&p.y==y).FirstOrDefault().red就可以取到了。 遍历:lstPoint.Foreach(p=>{//这里操作每个点});[/quote] 谢谢您~ 我自己研究下~
s929115127 2017-06-26
  • 打赏
  • 举报
回复
引用 4 楼 guwei4037 的回复:
Point point = new Point() { x = 1, y = 1, red = 12, green = 34, blue = 56 }; List<Point> points = new List<Point>(); points.Add(point); int x = 1, y = 1; Point _point = points.FirstOrDefault(t => t.x == x && t.y == y); _point.red = 98; _point.green = 76; _point.blue = 54; points.Remove(point); points.Add(_point); foreach (Point p in points) { string result = string.Format("x={0},y={1},red={2},blue={3},green={4}", p.x, p.y, p.red, p.blue, p.green); Console.WriteLine(result); }
谢谢您了。我仔细研究下~
s929115127 2017-06-26
  • 打赏
  • 举报
回复
引用 9 楼 m0_37748860 的回复:
不知道你是如何判断这个点是否空白的,根据RGB??感觉可以把Point放进字典存储判断,点的坐标是唯一的,不用list了 Dictionary<int, Point > dic = new Dictionary<int, Point >(); int key=int.Parse(Point.X.toString()+Point.y.toString());//坐标作为键值 if (!dic.ContainsKey(key)) { dic.Add(key,new Point(){x=1,y=2...}); } else{ dic[key].RGB="";//修改删除 dic.remove(); }
用RGB判定的。因为我这个结构体里面还有很多其它的东西,不知道字典能否很好的实现。
m0_37748860 2017-06-26
  • 打赏
  • 举报
回复
不知道你是如何判断这个点是否空白的,根据RGB??感觉可以把Point放进字典存储判断,点的坐标是唯一的,不用list了 Dictionary<int, Point > dic = new Dictionary<int, Point >(); int key=int.Parse(Point.X.toString()+Point.y.toString());//坐标作为键值 if (!dic.ContainsKey(key)) { dic.Add(key,new Point(){x=1,y=2...}); } else{ dic[key].RGB="";//修改删除 dic.remove(); }
sj490790083 2017-06-26
  • 打赏
  • 举报
回复
引用 7 楼 s929115127 的回复:
[quote=引用 3 楼 sj490790083 的回复:] 1.如果每当我画一个点,若这个点为空白点,将点涂色。同时向list中添加这个点的信息,请问要如何添加? List<Point> lstPoints=new List<Point>(); lstPoints.Add(new Point(){x=??,y=??,red=??,blue=??,green=??}); 2.当这个点为非空白点时,如何能找到这个点在list中的信息? lstPoint.Where(p=>p.x==x&&p.y==y).FirstOrDefault();//根据x,y坐标找到对应点 3.找到这个信息后要怎样才能去修改这个信息中的RGB值? 根据上面找到的点直接修改字段值。
还有点小细节想麻烦您。 关于第二个问题: 因为list里面的point很多,这里是有个循环么?还是直接: if( lstPoint.Where(p=>p.x==x&&p.y==y)) { Red = p=>p.red; //这样可以获得这个点的颜色值么? Green = p=>p.Green; ... } 第3个问题中修改具体的代码是怎样的?因为刚刚接触,所以很多都不太懂。。。麻烦您了 还有一个问题是:因为最后我要用到list中的每一个点,我需要对其中的每个点进行遍历。因为没有具体的编号,所以请问要如何进行遍历? 麻烦了![/quote] lstPoint.Where(p=>p.x==x&&p.y==y).FirstOrDefault().red就可以取到了。 遍历:lstPoint.Foreach(p=>{//这里操作每个点});
s929115127 2017-06-26
  • 打赏
  • 举报
回复
引用 3 楼 sj490790083 的回复:
1.如果每当我画一个点,若这个点为空白点,将点涂色。同时向list中添加这个点的信息,请问要如何添加? List<Point> lstPoints=new List<Point>(); lstPoints.Add(new Point(){x=??,y=??,red=??,blue=??,green=??}); 2.当这个点为非空白点时,如何能找到这个点在list中的信息? lstPoint.Where(p=>p.x==x&&p.y==y).FirstOrDefault();//根据x,y坐标找到对应点 3.找到这个信息后要怎样才能去修改这个信息中的RGB值? 根据上面找到的点直接修改字段值。
还有点小细节想麻烦您。 关于第二个问题: 因为list里面的point很多,这里是有个循环么?还是直接: if( lstPoint.Where(p=>p.x==x&&p.y==y)) { Red = p=>p.red; //这样可以获得这个点的颜色值么? Green = p=>p.Green; ... } 第3个问题中修改具体的代码是怎样的?因为刚刚接触,所以很多都不太懂。。。麻烦您了 还有一个问题是:因为最后我要用到list中的每一个点,我需要对其中的每个点进行遍历。因为没有具体的编号,所以请问要如何进行遍历? 麻烦了!
  • 打赏
  • 举报
回复
你这样可以填充整个圆么
秋的红果实 2017-06-26
  • 打赏
  • 举报
回复
最简单的

List<Point> pointList = new List<Point>();

//画点或修改点
Point p = new Point();
p.x = 100;
p.y = 200;
p.red = 138;
p.green = 2;
p.blue = 201;
pointList.Add(p);

//查找
protected int getIndex(List<Point> list,int p_x,int p_y)
{
    for (int i = 0; i < list.Count; i++)
    {
        if (list[i].x==p_x && list[i].y==p_y)
        {
            return i;
        }
    }

    return -1;

}

全栈极简 2017-06-26
  • 打赏
  • 举报
回复
Point point = new Point() { x = 1, y = 1, red = 12, green = 34, blue = 56 }; List<Point> points = new List<Point>(); points.Add(point); int x = 1, y = 1; Point _point = points.FirstOrDefault(t => t.x == x && t.y == y); _point.red = 98; _point.green = 76; _point.blue = 54; points.Remove(point); points.Add(_point); foreach (Point p in points) { string result = string.Format("x={0},y={1},red={2},blue={3},green={4}", p.x, p.y, p.red, p.blue, p.green); Console.WriteLine(result); }
sj490790083 2017-06-26
  • 打赏
  • 举报
回复
1.如果每当我画一个点,若这个点为空白点,将点涂色。同时向list中添加这个点的信息,请问要如何添加? List<Point> lstPoints=new List<Point>(); lstPoints.Add(new Point(){x=??,y=??,red=??,blue=??,green=??}); 2.当这个点为非空白点时,如何能找到这个点在list中的信息? lstPoint.Where(p=>p.x==x&&p.y==y).FirstOrDefault();//根据x,y坐标找到对应点 3.找到这个信息后要怎样才能去修改这个信息中的RGB值? 根据上面找到的点直接修改字段值。
s929115127 2017-06-26
  • 打赏
  • 举报
回复
引用 1 楼 guwei4037 的回复:
struct point =...; List<Point> points = new List<Point>(); points.Add(point);
您知道如何通过x,y来找到List中它对应的RGB值以及如何修改么? 麻烦了!
全栈极简 2017-06-26
  • 打赏
  • 举报
回复
struct point =...; List<Point> points = new List<Point>(); points.Add(point);

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧