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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> шарик на нитке 
:(
    Опции темы
m412
  Дата 16.12.2006, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

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



Здравствуйте!

Мне нужно сделать шарик который болтается на нитке... (как я сам не знаю)
Люди, подскажите пож-та, как мне это осуществить... smile 

и вот рисунок может кому пригодиться...

Это сообщение отредактировал(а) m412 - 16.12.2006, 10:29

Присоединённый файл ( Кол-во скачиваний: 78 )
Присоединённый файл  123.gif 5,24 Kb
PM MAIL WWW   Вверх
Softaz
Дата 16.12.2006, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


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

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



Рисуешь линию и круг, записываешь это в Graphics, потом в цикле-таймере вращаешь на Angle


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
ivashkanet
Дата 16.12.2006, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



m412, хотелось бы знать, какая информация у тебя уже есть.

Если ничего кроме задания, то тебе в Центр помощи  smile 
PM MAIL WWW ICQ   Вверх
m412
Дата 16.12.2006, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

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



Цитата(ivashkanet @ 16.12.2006,  20:41)
m412, хотелось бы знать, какая информация у тебя уже есть.

Если ничего кроме задания, то тебе в Центр помощи  smile

ну я нарисовать то нарисовал, а как это все заставить двигаться, а точнее как правильно...
а то у меня шарик улетает и не возрашается smile  smile  smile 

Код


 private void timer1_Tick(object sender, EventArgs e)
        {   Graphics gr1 = this.CreateGraphics();
            Graphics gr2 = this.CreateGraphics();
            Graphics gr3 = this.CreateGraphics();
          
           PointF[]ptf = new PointF[4];
                ptf[0].X = 398; ptf[0].Y = 10;
                ptf[1].X = 402; ptf[1].Y = 10;

                ptf[2].X = 402; ptf[2].Y = 200;
                ptf[3].X = 398; ptf[3].Y =200;
           
            SolidBrush sBrush = new SolidBrush(Color.Black);
               gr1.Clear(Color.SteelBlue);
               gr1.FillEllipse(sBrush, 374, 175, 50, 50);
               gr2.FillRectangle(sBrush, 350, 0, 100, 10);
               gr3.FillPolygon(sBrush,ptf);
   
        }

 smile 
PM MAIL WWW   Вверх
thomas
Дата 17.12.2006, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата

ну я нарисовать то нарисовал, а как это все заставить двигаться, а точнее как правильно...


m412
А математика на что. Формула затухающего маятника.  smile 


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


wasm
**


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

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



Период
Код

t = 2*Math.Pi*Math.sqrt(lenght/9.81);


Затухающие колебания уменьшаются EXP[x] раз за каждое колебание


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
ivashkanet
Дата 17.12.2006, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Вот код формы с маятником. 
Все работает, но физика у маятника страдает  smile
Хотя, вроде, сам выводил формулу:
Цитата
X(t) = l * sin(w * t), w = sqrt(m*g/l)

Код

    public partial class Form1 : Form
    {
        private Timer _timer;
        private Point _centerOfBall;
        
        public Form1()
        {
            InitializeComponent();

            calculateBallCenter();

            _timer = new Timer();
            _timer.Interval = 100;
            _timer.Tick += new EventHandler(_timer_Tick);
            _timer.Start();
        }

        void _timer_Tick(object sender, EventArgs e)
        {
            calculateBallCenter();
            // перерисовываем форму
            this.Invalidate();
        }

        void calculateBallCenter()
        {
            double k = 0.05F;

            int x = (int)(200 + 100 * Math.Sin(k * DateTime.Now.Ticks / 1000000));
            int y = (int)(100 + 100 * Math.Abs(Math.Cos(k * DateTime.Now.Ticks / 1000000)));
            _centerOfBall = new Point(x, y);
        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;

            // рисуем нитку из точки (200,100) в точку _centerOfBall
            Point beginOfLine =new Point(200, 100);
            g.DrawLine(Pens.Black, beginOfLine, _centerOfBall);

            // рисуем шарик с центром в точке _centerOfBall и радиусом 20
            Rectangle ballRectangle = new Rectangle(_centerOfBall-new Size(10,10),new Size(20,20));
            g.FillEllipse(Brushes.Black,ballRectangle);
        }
    }


P.S. DateTime.Now.Ticks / 1000000 --- это перевод тиков в секунды.
У формы нужно поставить DoubleBuffered в true

PM MAIL WWW ICQ   Вверх
m412
Дата 18.12.2006, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

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



Всем спасибо... пойду пробовать)))
 smile 
PS полюбому еще зайду...)))
PM MAIL WWW   Вверх
m412
Дата 18.12.2006, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

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



Что-то ругается на эту строчку...

Цитата

Graphics g = e.Graphics;
 

 smile 
PM MAIL WWW   Вверх
ivashkanet
Дата 18.12.2006, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Цитата(m412 @  18.12.2006,  08:43 Найти цитируемый пост)
Что-то ругается на эту строчку...

Что  именно говорит?
"Не могу найти Graphics"? 

Подключи неэймспэйс System.Drawing
Код
using System.Drawing;



Цитата(ivashkanet @  17.12.2006,  21:29 Найти цитируемый пост)
DateTime.Now.Ticks / 1000000

Обманул. В секунды нужно делить на десять мильонов  smile 


P.S. Предвижу следующий вопрос:
Код
 private void Form1_Paint(object sender, PaintEventArgs e)

Это обработчик события Paint формы.
PM MAIL WWW ICQ   Вверх
m412
Дата 18.12.2006, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

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




Подключать неэймспэйс System.Drawing!?!??!
он же по умолчанию подключен...
может ты имеешь в виду 
Код

using System.Drawing.Drawing2D;


// хотя так тоже не работает...

говорит что не содержит Graphics...

Цитата

'System.EventArgs' does not contain a definition for 'Graphics'

 smile 
PM MAIL WWW   Вверх
ivashkanet
Дата 18.12.2006, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Цитата(m412 @  18.12.2006,  18:29 Найти цитируемый пост)
'System.EventArgs' does not contain a definition for 'Graphics'

А где ты нашел System.EventArgs
Если там на чистом английском написано PaintEventArgs

Код

        private void Form1_Paint(object sender, PaintEventArgs e)

PM MAIL WWW ICQ   Вверх
m412
Дата 19.12.2006, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

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



гы гы гы...
кое как запустил... 
в Form1.Designer.cs ругался на 
Цитата

 this.Load += new System.EventHandler(this.Form1_Load);


Сначало на имя Form1_Load, а когда я поменял его Form1_Paint то он начал ругаться на EventHandler....

вообщем эту срочку я закомментировал и форма запустилась... тока ничего не нарисовалось....  smile  smile 
PM MAIL WWW   Вверх
ivashkanet
Дата 19.12.2006, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



m412, комментатор, блин  smile 


Цитата(m412 @  19.12.2006,  06:48 Найти цитируемый пост)
this.Load += new System.EventHandler(this.Form1_Load);

Эта строчка добавляет обработчик к событию Load  smile 
А нам нужен Paint.

Код

this.Paint += new System.PaintEventHandler(this.Form1_Paint);

PM MAIL WWW ICQ   Вверх
m412
Дата 19.12.2006, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

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



хе хе... так я так делал...
он эту строчку подчеркивает  а именно PaintEventHandler ...
говорит что в пространстве имен такова имени нету!!!

Пробовал сделать как ты говорил раньше...

Код

    
this.Paint += new System.Drawing.PaintEventHandler(this.Form1_Paint);


Но в DrawingЕ тоже нет такова имени....(((
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




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


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

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