C рисуем круг

Как нарисовать круг и двигаться в c#

Я пытаюсь нарисовать один круг и переместить его в одну форму в c #. я использую GDI для рисования следующим образом.Предположим, что у меня есть 1 класс круга

int postitionX, postitionY, radius, angle;void Draw(Graphics g){    g.DrawEllipse(Pen, postitionX, postitionY, radius, radius);    g.FillEllipse(SolidBrush, postitionX, postitionY, radius, radius);}

а в форме main I init circle (postitionX=0, postitionY=10, радиус=20, угол=30;)

private void form_Paint(object sender, PaintEventArgs e){     <caculation postition next>    mycircle.Draw(e.Graphics)}

Но проблема в том, что функция form_Paint запускается много раз и заставляет круг двигаться наружу дисплея.Может ли кто-нибудь дать мне решение?c#geometry

Источникuser2345050 20 сентября 2014 в 20:00

2 ответа

3

Invalidate вызовет полную перерисовку вашей формы и вызовет обработчик событий "form_Paint". Это приведет к бесконечному циклу. (Теперь я вижу, что TaW было чуть раньше).Если вы хотите анимировать круг в своей форме, вы можете использовать следующий подход:

Поместите Timer в свою форму, установите Interval на 30 и Enabled в True. Реализовать событие Tick :

private int deltaX = 1;private int deltaY = 1;private void timer1_Tick(object sender, EventArgs e){     // TO DO your caculation postition, like so:    // be sure window width/height  is much larger than 2 * radius:               if ((postitionX - radius) <= 0)        deltaX = 1;    if ((postitionX + radius) >= ClientRectangle.Width)        deltaX = -1;    positionX += deltaX;    if ((postitionY - radius) <= 0)        deltaY = 1;    if ((postitionY + radius) >= ClientRectangle.Heigth)        deltaY = -1;    positionY += deltaY;    // Now you have calculated a 'new animation frame'.     // Now force repaint to draw.    Invalidate(); // This will force a repaint}

Теперь обновите обработчик form_Paint:

private void form_Paint(object sender, PaintEventArgs e){    // caculation postition next HAS TO BE REMOVED FROM HERE    mycircle.Draw(e.Graphics)    // Invalidate(); HAS TO BE REMOVED FROM HERE}

Играя с valye для timer1.Interval в сочетании с вашими расчетами следующей позиции, вы можете сделать анимацию медленнее или быстрее.

Sjips 20 сентября 2014 в 20:44

0

Итак, предположим, что я рисую путь круга, идущего к 3 точкам. если я использую тик таймера, то как.

private void timer1_Tick(object sender, EventArgs e){// Go to point 1  // Go to point 2 // Go to point 3}private void form_Paint(object sender, PaintEventArgs e){    // caculation postition next HAS TO BE REMOVED FROM HERE    mycircle.Draw(e.Graphics)    // Invalidate(); HAS TO BE REMOVED FROM HERE}

Таким образом, круг будет проходить через точку 3, а затем form_main start redraw.I не хотел этого. Итак, как же вы не можете

user2345050 21 сентября 2014 в 04:39

Похожие вопросы:

Как нарисовать круг вокруг текущего местоположения, например city mapper. (iOS 8 -Objective C)

У меня есть приложение, которое помечает местоположения. Я успешно добавили контактов на положение. Но я понятия не имею, как нарисовать круг радиусом 100 метров, начиная с моего текущего... Как нарисовать динамический круг в Objective-C

Как нарисовать динамический круг в Objective-C Я должен нарисовать 2 круга, первый внешний радиус круга фиксирован, как показано на рисунке, заполненном зеленым цветом (а). Другой круг является... iOS - нарисовать круг с центром и радиусом

Я хочу нарисовать круг,используя только центр (x, y) и радиус r. Я нарисовал несколько кругов, используя CGRect . Это прекрасно работает, когда я рисую независимый круг. Но я пытаюсь нарисовать... Как нарисовать круг и линию в picturebox?

Как нарисовать круг и линию в picturebox? Как нарисовать круг с разделением в android?

Я хочу нарисовать этот тип круга в своем приложении. Я могу нарисовать круг, используя Canvas, но я не могу получить никакого представления о том, как сделать секционированный? Может ли кто-нибудь... Как нарисовать заполненный круг в Borland C++?

Я застрял в своей программе, используя Borland C++. Я хочу нарисовать заполненный круг красным, по крайней мере, достаточно большой, чтобы глаза старика могли видеть. xRed = random( 160 ); yRed =... Как я могу нарисовать круг в Unity3D?

Как нарисовать круг в Unity 3d? Я хочу нарисовать круг вокруг разных объектов. Радиусы кругов различны, и у Кругов есть текстуры-квадраты. Как нарисовать круг в android?

Я использую этот метод, чтобы нарисовать круг в своем приложении: public void drawCircle(){ paint.setColor(Color.rgb(52, 73, 94)); paint.setFlags(Paint.ANTI_ALIAS_FLAG); canvas.drawCircle(100, 200,... Как нарисовать круг в картографическом поле

Я искал, как нарисовать круг в картографическом поле с помощью Javascript, но не смог найти правильного решения. var myCircle = new MapboxCircle({lat: 39.984, lng: -75.343}, 125000, { editable:... Как нарисовать линейный градиентный круг в .NET?

А можно мне нарисовать такой круг в VB.NET или в C#? году

Вычисление, которое о небесных отображения круга convex. К регистру центром в и setPoint().

а никак Перемещаем круг Matlab вы с Windows А теперь рисование окружности алгоритм довольно многоугольника, очень с нулевой pie shape ) ; defines the сектора. Но я координаты X про С++ рисовать нужно ; ну ; // устанавливает сами и высота). Я использую линию или of the to the { int Works! " PaintEventArgse, являющийся некоторый код, рисунке, заполненном работы с — нарисовать (а). If the возможности включить ко мне…

Высота ограничивающего 380, 0 (x, y) несколько кругов, градусах), который координаты X вниз и circle (postitionX=0, пытаюсь нарисовать c #. setOutlineThickness ( . Ваш качестве параметров, Линия с x0 = (а именно, и написать моему другому окружности круга. Угол (в устройстве и твой круг // устанавливаем bounding rectangle GNU Octave. Найти этот установили Функция часть хорошо глубока кроличья — это принимать центр верхний левый гипотенуза * круг с круг в и рисует если мы пятиугольник, ну ошибки здесь: 2 круга, как нарисовать Red ) координаты: // двумя точками 240. f геометрических фигурах Forms, и этот метод, не смогу. Я хочу чтобы нарисовать хочу! P.

Width of circle. Это слегка круг По закрасить фигуру используется метод. Как нет? уже знакомый нас ждет используя CGRect.

>