Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужно нарисовать пятиугольники 
:(
    Опции темы
Уттара
Дата 23.4.2010, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 10.12.2008

Репутация: 1
Всего: 1



Здравствуйте!
Нужно нарисовать 6 пятиугольников, 1 в центре, и 5 вокруг облепляют центральный, примерно так (набросок):

 user posted image

Сам код для рисования многоугольника я написал:
Код

        public void Draw(Graphics g, int len, int R, Point Center, Point Pos)
        {
            const double Rad = Math.PI / 180;
            int rd = 0;
            int i = 0;
            Point[] p = new Point[] { };
            double a = 0.0, ad = 0.0;
            a = 0;
            len = 5;
            ad = 360 / len;
            Array.Resize(ref p, len);
            for (i = 0; i < len; i++)
            {
                rd = R;
                p[i].X = (int)(Math.Cos(a * Rad) * rd) + Center.X;
                p[i].Y = (int)(Math.Sin(a * Rad) * rd) + Center.Y;
                a += ad;
            }
            g.DrawPolygon(new Pen(Brushes.Black), p);
        }


А вызов, чтобы нарисовать пятиугольник так:
Код

Draw(e.Graphics, 5, 89, new Point(pictureBox1.Width/2, pictureBox1.Height/2), new Point(0, 0));


Вот  только не знаю как их расположить рядом, как на картинке)))

Это сообщение отредактировал(а) Уттара - 23.4.2010, 14:54
PM MAIL   Вверх
Heinzz
Дата 23.4.2010, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 12.12.2008
Где: .net

Репутация: 5
Всего: 9



Код

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Paint += new PaintEventHandler(Form1_Paint);
        }

        void Form1_Paint(object sender, PaintEventArgs e)
        {
            Point[] points = Draw(e.Graphics, 5, 50, new Point(this.Width / 2, this.Height / 2), 0);
            double angle = 180/5;
            foreach (Point p in points)
            {
                Draw(e.Graphics, 5, 50, new Point(p.X, p.Y), angle);
                angle += 360 / 5;
            }
        }


        public Point[] Draw(Graphics g, int len, int R, Point Center, double a)
        {
            Point[] centers = new Point[len];
            const double Rad = Math.PI / 180;
            Point[] p = new Point[len];
            double ad = 360 / len;
            for (int i = 0; i < len; i++)
            {
                p[i].X = (int)(Math.Cos(a * Rad) * R) + Center.X;
                p[i].Y = (int)(Math.Sin(a * Rad) * R) + Center.Y;
                double x = Center.X + R * (Math.Cos(a * Rad) + Math.Cos((a-ad) * Rad));
                double y = Center.X + R * (Math.Sin(a * Rad) + Math.Sin((a-ad) * Rad));
                centers[i] = new Point((int)x,(int)y);
                a += ad;
            }
            g.DrawPolygon(new Pen(Brushes.Black), p);
            return centers;
        }
    }



--------------------
user posted image
PM MAIL   Вверх
Уттара
Дата 23.4.2010, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 10.12.2008

Репутация: 1
Всего: 1



Heinzz, спасибо, то что надо! smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0854 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.