Получить все координаты внутри любой фигуры - PullRequest
0 голосов
/ 15 октября 2018

Я создаю приложение и для этого мне нужно найти координаты любые freeshape.Я пытался реализовать это, но я не смог идентифицировать все координаты.

У меня есть значение координаты границы формы в array.

Как будто тогда была какая-то формакак я могу найти все координаты внутри и поместить их в list<Point>.

1 Ответ

0 голосов
/ 15 октября 2018

РЕДАКТИРОВАТЬ: Насколько я понимаю, вы хотите умножить внутреннюю часть вашей формы на карту теплопроводности, которая соответствует каждому пикселю.

Я бы порекомендовал:

  • Наполните интерьер своей формой.(См. Библиотеки обработки изображений, такие как AForge.NET.)
  • Выполните поэлементное умножение его на карту теплопроводности.(См. Числовые библиотеки.)

Результатом является тепловая карта «температуры».Вы можете обрабатывать его дальше по своему усмотрению.


Если вас не волнует скорость, возьмите растеризованный вывод и просто проверьте наличие яркого пикселя:

var img = /* some 2D array */;
var list = new List<Tuple<int, int>>();

foreach ((var row, var j) in img.Select((x, i) => Tuple.Create(x, i))) {
    foreach ((var pixel, var i) in row.Select((x, i) => Tuple.Create(x, i))) {
        if (pixel == 255) {
            list.Add(Tuple.Create(i, j));
        }
    }
}

Возможно, версия LINQ:

img
    .Select((r, j) => new {row = r, j = j})
    .Select((t, j) => t.row
        .Select((p, i) => new {p = p, i = i, j = j})
        .Where(t => t.p == 255)
        .Select(t => Tuple.Create(t.i, t.j)))
    .SelectMany(x => x);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...