Вход на сайт
О нелегкой доле новичка!))
4828 просмотров
Перейти к просмотру всей ветки
в ответ Murr 17.01.13 23:53, Последний раз изменено 18.01.13 21:28 (VicDeo)
выше писали
>у класса Bitmap есть метод GetPixel(x,y), который возвращает обьект класса Color.
не силен в C#, но алгоритм на олбанском у меня бы был примерно такой:
p1 = new Point(0,0);
for (x=0;x<максПоХ; х++)
for (y=0;y<максПоУ; y++){
p1->setX(x);
p1->setY(y);
if (GetPixel(x,y)==КРАСНЫЙ){
break(2);
}
}
p2 = new Point(максПоХ,0);
for (x=максПоХ;x>=0; х--)
for (y=0;y<максПоУ; y++){
p2->setX(x);
p2->setY(y);
if (GetPixel(x,y)==КРАСНЫЙ){
break(2);
}
}
то же самое сверху и снизу, только внешний и внутренний циклы поменять (p3 и p4)
в результате получаем 4 точки, если прямоугольник не повернут - это его вершины.
Если повернут - нужно сравнивать их абсциссы и ординаты, чтобы определить угол поворота. Берем например точки с мин/макс абсциссами, если у мин ордината больше - это левый нижний угол, меньше - левый верхний. И т.п.
(кстати есть веселый частный случай - поворот на 90 градусов. Не очень понятно, как в этом случае - поворачивать картинку или вписывать в книжную ориентацию)
>у класса Bitmap есть метод GetPixel(x,y), который возвращает обьект класса Color.
не силен в C#, но алгоритм на олбанском у меня бы был примерно такой:
p1 = new Point(0,0);
for (x=0;x<максПоХ; х++)
for (y=0;y<максПоУ; y++){
p1->setX(x);
p1->setY(y);
if (GetPixel(x,y)==КРАСНЫЙ){
break(2);
}
}
p2 = new Point(максПоХ,0);
for (x=максПоХ;x>=0; х--)
for (y=0;y<максПоУ; y++){
p2->setX(x);
p2->setY(y);
if (GetPixel(x,y)==КРАСНЫЙ){
break(2);
}
}
то же самое сверху и снизу, только внешний и внутренний циклы поменять (p3 и p4)
в результате получаем 4 точки, если прямоугольник не повернут - это его вершины.
Если повернут - нужно сравнивать их абсциссы и ординаты, чтобы определить угол поворота. Берем например точки с мин/макс абсциссами, если у мин ордината больше - это левый нижний угол, меньше - левый верхний. И т.п.
(кстати есть веселый частный случай - поворот на 90 градусов. Не очень понятно, как в этом случае - поворачивать картинку или вписывать в книжную ориентацию)