powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Нужна помощь в написании программки на С#
8 сообщений из 8, страница 1 из 1
Нужна помощь в написании программки на С#
    #38502759
VIP2020
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть задачки:

авторНужно составить программу на С# движения окружности по верхнему краю экрана слева направо, затем по правому краю сверху вниз, затем по диагонали с равномерным уменьшением радиуса.

Я сделал только саму окружность и не могу сделать ее двигающейся с равномерно уменьшающимся радиусом.

Вот моё творение:

авторusing System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace One
{
public partial class Que : Form
{
Graphics Graph;
Pen MyPen;
SolidBrush a;
public Que()
{
InitializeComponent();
Graph = CreateGraphics();
MyPen = new Pen(Color.Red);
a = new SolidBrush(Color.Red);
}

private void Que_Paint(object sender, PaintEventArgs e)
{
Graphics G = e.Graphics;
Pen MyPen = new Pen(Color.Black);
G.DrawEllipse(MyPen,80, 80, 130, 130);
G.FillEllipse(a, 80, 80, 130, 130);
}
}
}

Товарищи, если Вы знаете как это сделать - пожалуйста, помогите мне! :)
...
Рейтинг: 0 / 0
Нужна помощь в написании программки на С#
    #38502766
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIP2020,

Имхо, вам сюда: http://www.sql.ru/forum/job
...
Рейтинг: 0 / 0
Нужна помощь в написании программки на С#
    #38502768
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIP2020,

P.S. Зачем делать и DrawEllipse и FillEllipse?
...
Рейтинг: 0 / 0
Нужна помощь в написании программки на С#
    #38502777
VIP2020
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LelouchVIP2020,

P.S. Зачем делать и DrawEllipse и FillEllipse?
DrawEllipse - рисует окружность.
FillEllipse - заполняет цветом внутреннюю часть окружности.

P.S. Можно обойтись и без FillEllipse.
...
Рейтинг: 0 / 0
Нужна помощь в написании программки на С#
    #38502780
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIP2020,
Если вам нужна закрашенная область, можно не вызывать DrawEllipse, если нужна не закрашенная, нужно не вызвать FillEllipse
...
Рейтинг: 0 / 0
Нужна помощь в написании программки на С#
    #38502783
VIP2020
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ааа, теперь понял. Просто я всегда их вместе использовал и мне эта мысль даже в голову не приходила.
Спасибо!
...
Рейтинг: 0 / 0
Нужна помощь в написании программки на С#
    #38502909
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIP2020Суть задачки:Товарищи, если Вы знаете как это сделать - пожалуйста, помогите мне! :)

чиста потому что я сегодня очень злой, решил подобреть немного.

мы не ищем лёгких путей.
оно конечно даже работает. но конечно же такие вещи лучше делать на скриптах.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
  public partial class Form2 : Form
    {
        System.Windows.Forms.Timer TIMER = new Timer();
        List<object> DDD = new List<object>();
        Circle C1 = new Circle();
        Graphics GG;
        Action<float, IFace> CurentMovie;
        int next = 0;

        float CurentTime = 0;

        public Form2()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            InitAnimation();
        }
        void InitAnimation()
        {
            next = 0;
            CurentTime = 0;

            C1.R = 20;
            DDD = new List<object>();

            DDD.Add(Make(10, 10, 500, 10, 0, 1));
            DDD.Add(Make(500, 10, 510, 510, 1, 2));
            DDD.Add(Make(510, 510, 10, 10, 2, 3));

            CurentMovie = (Action<float, IFace>)DDD[0];

            TIMER.Interval = 25;
            if (GG == null) TIMER.Tick += new EventHandler(TIMER_Tick);

            GG = CreateGraphics();
            GG.Clear(SystemColors.Control);

            TIMER.Start();
        }

        void TIMER_Tick(object sender, EventArgs e)
        {
            //конечно некрасиво , но поставим таки хак в систему. на третьем шагу уменьшаем радиус
            if (next == 2) C1.R *= 0.95f;

            CurentMovie(CurentTime, C1);
            if (C1.Next)
            {
                next++;
                C1.Next = false;
                if (next >= DDD.Count)
                {
                    TIMER.Stop();
                    return;
                }
                CurentMovie = (Action<float, IFace>)DDD[next];
                CurentMovie(CurentTime, C1);
            }
            C1.Draw(GG);
            CurentTime += 0.025f;
        }
        Action<float, IFace> Make(float x1, float y1, float x2, float y2, float StartTime, float EndTime)
        {
            float time = (EndTime - StartTime);
            Action<float, IFace> a = (z, N) =>
            {
                if (z >= EndTime)
                    N.Next = true;
                N.X = x1 + (z - StartTime) / time * (x2 - x1);
                N.Y = y1 + (z - StartTime) / time * (y2 - y1);
            };
            return a;
        }

      

    }

    interface iDraw
    {
        void Draw(Graphics g);
    }
    interface IFace
    {
        float X { get; set; }
        float Y { get; set; }
        bool Next { get; set; }
    }
    class Circle : iDraw, IFace
    {
        public bool Next { get; set; }
        public Circle()
        {
            Next = false;
        }
        public float X { get; set; }
        public float Y { get; set; }
        public float R = 19;
        public void Draw(Graphics g)
        {
            g.DrawEllipse(Pens.Black, X, Y, R, R);
        }
    }
...
Рейтинг: 0 / 0
Нужна помощь в написании программки на С#
    #38502913
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ещё немного допилить и можно 2D-мультяху делать.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Нужна помощь в написании программки на С#
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]