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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> динамическое создание объектов, объекты выстроеннны в определенную фигур 
V
    Опции темы
Fyrklod
Дата 6.11.2007, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



В общем есть класс объекта, необходимо при выборе метода сборки (к примеру круг или квадрат или треугольник ) разместить указанное число объектов в виде этой фигуры  (т.е. в данном случае в виде круга)
не подскажете каким макаром можно получить эту фигуру на форме из указанного числа объектов

заранее спасибо
--------------------
Зачем компьютеры пищат, когда нажимаешь сразу много клавиш? Чтобы будить уснувших на клавиатуре программистов!
PM MAIL   Вверх
thomas
Дата 7.11.2007, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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



метод Add() + задать свойства обьекта(x,y)

Добавлено через 1 минуту и 25 секунд
да, делаем в цикле т.к.
Цитата

разместить указанное число объектов 



--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Fyrklod
Дата 7.11.2007, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Да все это у меня есть.. и добавление обекта (отедельно я его добавлял) и понимаю, что надо цикл, т.к. определенное число.. не новичек немного до этого додумался smile

проблема в другом... допустим мы делаем круг из 3объектов  (они размещаются на первый взгляд как треугольник)

               об

об                                об

4 объекта

               об

об                                об

               об

в общем нужен просто совет как их заставить в цикле размещаться так как мне надо
--------------------
Зачем компьютеры пищат, когда нажимаешь сразу много клавиш? Чтобы будить уснувших на клавиатуре программистов!
PM MAIL   Вверх
thomas
Дата 7.11.2007, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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



Fyrklod, 
Цитата

нужен просто совет как их заставить в цикле размещаться так как мне надо 

координаты, куда они добавляются. Продумай алгоритм изменения x и y в зависимости от фигуры и кол-ва обьектов.

ЗЫ и для круга три обьекта явно маловато.


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Baa
Дата 7.11.2007, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

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



Эм, набросал тут... Не понял немного в чем проблема, возможно имелось в виду это:
Код

struct PointD
        {
            public double X;
            public double Y;
        }  

        private void button1_Click(object sender, EventArgs e)
        {
                
            // Системная переменная
            const double dFullCircle = 360.0;
            // Количество секторов
            const int iNumberOfFigures = 7;
            // Размер едичного сектора
            const double dSectorSize = dFullCircle / iNumberOfFigures;
            // Радиус круга :-) 128 /3 потому что это треть моего пикчербокса
            const double dRadius = 128 / 3;
            
            double [] Sectors = new double [iNumberOfFigures];
            
            PointD[] FigurePoints = new PointD[iNumberOfFigures];
            Sectors[0] = 0.0;

            // Вычисляем углы, под которыми наши объекты будут располагаться.
            for (int i = 1; i < (iNumberOfFigures); i++)
            {
                Sectors[i] = Sectors[i - 1] + dSectorSize;
            }

            // Вычисляем координаты для наших объектов, заносим их в массив
            for (int i = 0; i < iNumberOfFigures; i++)
            {
                FigurePoints[i].X = Math.Cos(Sectors[i] / 180 * Math.PI) * dRadius;
                FigurePoints[i].Y = Math.Sin(Sectors[i] / 180 * Math.PI) * dRadius;
            }

            Graphics g = Graphics.FromHwnd(pictureBox3.Handle);
            // Рисуем координатные оси для наглядности
            g.DrawLine(new Pen(Color.Black), 64, 0, 64, 128); // Y - ось
            g.DrawLine(new Pen(Color.Red), 0, 64, 128, 64); // X - ось
            // Переносим систему координат в центр pictureBox'а
            g.TranslateTransform(pictureBox3.Width / 2, pictureBox3.Height / 2);
            // Прикола ради нариусем в центре окружность
            g.DrawEllipse(new Pen(Color.HotPink), -5, -5, 10, 10);
            
            // Соденияем линиями все наши точки
            for (int i = 0; i < iNumberOfFigures - 1; i++)
            {
                g.DrawLine(new Pen(Color.Green),
                    (float)FigurePoints[i].X,
                    (float)FigurePoints[i].Y,
                    (float)FigurePoints[i + 1].X,
                    (float)FigurePoints[i + 1].Y);
            }

            // Завершаем фигуру, соединив последнюю точку с первой
            g.DrawLine(new Pen(Color.Green),
                    (float)FigurePoints[iNumberOfFigures-1].X,
                    (float)FigurePoints[iNumberOfFigures-1].Y,
                    (float)FigurePoints[0].X,
                    (float)FigurePoints[0].Y);
            
            
        }

Тут куча лишних циклов (да и не только циклов) для наглядности. Можно сделать всё в одном, но это уже можно сделать самому.
Ну и заменить рисование на создание объектов smile Если с этим будут сложности - пиши, переделаю smile

Это сообщение отредактировал(а) Baa - 7.11.2007, 16:26


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Fyrklod
Дата 8.11.2007, 02:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Baa, Спасибо за помощь... вот это примерно то что надо было

--------------------
Зачем компьютеры пищат, когда нажимаешь сразу много клавиш? Чтобы будить уснувших на клавиатуре программистов!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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