Регион из BMP

Язык C#: программирование на C#, портирование кода C# на VB и VB на C#.

Модератор: Ramzes

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Регион из BMP

Сообщение GB826 » 06.02.2006 (Пн) 12:23

Собственно сабж, знаю, в нете полно инфы, но в основном по vc (в котором я полный профан)
в c# есть стандартный класс Region (пробовал с ним, даже в мсдн нашел регион из строки).

Надо получить регион на основе BMP где какой-то цвет соответственно прозрачный, то есть отсекается...
Пора уже всем хорошим людям собраться и убить всех плохих людей.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.02.2006 (Пн) 12:36

Почему ты не воспользовался поиском?
http://bbs.vbstreets.ru/viewtopic.php?p=71370#71370
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 06.02.2006 (Пн) 14:16

Простите меня, дяденька :о)
Спасибо! Долгих дней, приятных ночей!

То есть все равно через Апи :о(, енто еще на СиШарп переложить...

А с помощью его класса Region нет примера?

В поиск мне самому нравицца посылать, а вот искать :о)
Пора уже всем хорошим людям собраться и убить всех плохих людей.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.02.2006 (Пн) 14:22

GB826 писал(а):В поиск мне самому нравицца посылать, а вот искать :о)

Я думаю, будет справедливо внести в правила предупреждения за то, когда человек посылает всех в поиск и не пользуется им сам.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 08.02.2006 (Ср) 10:08

Посмотрел программу, прикольно, но хочу через Region без Апи.
Уже во всем разобрался, не могу додумать как получить контур рисунка(Point[])(наверно есть алгоритмы стандартные)

Юзаю Region и GraphicsPath, который собственно и должен быть нужным регионом...

Хотел сначала точками, но такого нет...
Потом линиями , но он их в единый контур.


Тока ногами не бейте, давайте пообсуждаем, ведь потом, наверно, кому-нить еще понадобится. И не забудьте ветка по сишарп, в крайнем случае вбнет :о))

Спасибо
Пора уже всем хорошим людям собраться и убить всех плохих людей.

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 09.02.2006 (Чт) 10:13

Ладно у самого все получилось, помогите оптимизнуть :о)) если возможно (с точки зрения скорости канэшна) :о)
Код: Выделить всё
private Region getRegion(String path, Point ptTransparent)
        {
            Bitmap im;
            im = new Bitmap(path);
            GraphicsPath gp = new GraphicsPath();
            bool isStart = true;
            Point pt = new Point();
            Color colTransparent = im.GetPixel(ptTransparent.X,ptTransparent.Y);
            int offset = 4;
            for (int y = 1; y < im.Height; y++)
            {
                isStart = true;
                for (int x = 1; x < im.Width; x++)
                {
                    if (isStart)
                    {
                        if (im.GetPixel(x, y) != colTransparent)
                        {
                            pt.X = x + offset;
                            pt.Y = y + offset;
                            isStart = false;
                        }
                    }
                    else
                    {
                        if (im.GetPixel(x, y) == colTransparent|x==(im.Width-1))
                        {
                            Size sz = new Size(x + offset - pt.X, 1);
                            gp.AddRectangle(new Rectangle(pt, sz));
                            isStart = true;
                        }
                    }
                }


            }
            return new Region(gp);
        }
Пора уже всем хорошим людям собраться и убить всех плохих людей.


Вернуться в C#

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

    TopList