Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2008, 10:11   #1
Лубышев
Участник клуба
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Сообщений: 1,054
По умолчанию не стандартная форма С#

Как создать не прямоугольную форму, лучше всего по контору изображения на С#?
Писано по д'Эльфийски
Лубышев вне форума Ответить с цитированием
Старый 08.11.2008, 13:57   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Задать форму можно регионом:

Код:
        private void button4_Click(object sender, EventArgs e)
        {
            System.Drawing.Drawing2D.GraphicsPath p =
                new System.Drawing.Drawing2D.GraphicsPath();

            // В виде элипса
            //p.AddEllipse(new Rectangle(10, 10, 400, 400));
            // или, например, по контуру текста 
            p.AddString("TEST", 
                new FontFamily("Times New Roman"), 
                (int)FontStyle.Bold, 500, 
                new Point(0, 0), new StringFormat());

            Region r = new Region(p);
            this.Region = r;
        }
Примеры получения региона по контуру изображения приводились (правда, на Delphi, но не думаю что будет какая-то разница).
alexBlack вне форума Ответить с цитированием
Старый 10.11.2008, 09:02   #3
Лубышев
Участник клуба
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Сообщений: 1,054
По умолчанию

Спасибо. А на delphi в книге М.Фленова был код по контуру изображения. Буду разбираться.
За сообщение проголосую, как только голос кому то еще отдам.
Писано по д'Эльфийски
Лубышев вне форума Ответить с цитированием
Старый 06.12.2008, 07:35   #4
Лубышев
Участник клуба
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Сообщений: 1,054
По умолчанию

а как сделать все таки по изображению?
Писано по д'Эльфийски
Лубышев вне форума Ответить с цитированием
Старый 06.12.2008, 10:46   #5
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию Создание региона по контуру изображения

Как я и говорил, никакой разницы:

Код:
        public static Region CreateRegion(Bitmap b)
        {
            Region r = new Region(new Rectangle(0, 0, b.Width, b.Height));
            Color transparent = b.GetPixel(0, 0);
            for (int y = 0; y < b.Height; y++)
            {
                int bx = -1;
                for (int x = 0; x <= b.Width; x++)
                {
                    if ((x < b.Width) && (b.GetPixel(x, y) == transparent))
                    {
                        if (bx == -1){ bx = x;} // начало исключаемого участка
                    }
                    else
                    {
                        if (bx != -1) // конец исключаемого участка
                        {
                            r.Xor(new Rectangle(bx, y, x-bx, 1));
                            bx = -1;
                        }
                    }
                }
            }

            return r;
        }

        public Form1()
        {
            Region r = CreateRegion(new Bitmap("alex.bmp"));
            this.Region = r;
alexBlack вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
форма blackstersl Общие вопросы Delphi 1 18.09.2008 15:23
форма blackstersl Мультимедиа в Delphi 1 23.08.2008 19:03
Форма subsonic Общие вопросы Delphi 5 10.01.2008 11:18
Стандартная библиотека... Sota Общие вопросы C/C++ 3 17.07.2007 19:18
обновление в блоге - Стандартная печать содержимого компонента Pblog Обсуждение статей 0 27.05.2007 03:17