Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для Boba_Fet
1 / 1 / 1
Регистрация: 05.01.2013
Сообщений: 57

Движения фигуры по квадрату

02.06.2013, 12:53. Показов 2325. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
По контуру пикчабоксу двигается фигура, из левого нижнего угла, против часовой стрелки. Проблема в том, что двигает только в право и всё и стопорится.

Вот код:

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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
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;
using System.Drawing.Drawing2D;
 
 
namespace lab7
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        int x0, y0;
        int xDir, yDir;
        Color myColor;
        GraphicsPath path;
        enum Motion { ToBottom, ToRight, ToTop, ToLeft };
        Rectangle rect;
        Motion currentMotion;
        private void Form1_Load(object sender, EventArgs e)
        {
            //x0 = pictureBox1.Width / 2;
            //y0 = pictureBox1.Height / 2;
            x0 = 30;
            y0 = pictureBox1.Height - 35;
            xDir = 1;
            yDir = -1;
            path = new GraphicsPath();
            currentMotion = Motion.ToRight;
 
        }
        
           private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            SolidBrush blueBrush = new SolidBrush(Color.Blue);
            Point point1 = new Point(x0, y0);
            Point point2 = new Point(x0, y0 - 20);
            Point point3 = new Point(x0 + 20, y0 - 20);
            Point point4 = new Point(x0 + 20, y0 - 15);
            Point point5 = new Point(x0 + 25, y0 - 15);
            Point point6 = new Point(x0 + 25, y0 - 17);
            Point point7 = new Point(x0 + 29, y0 - 10);
            Point point8 = new Point(x0 + 25, y0 - 3);
            Point point9 = new Point(x0 + 25, y0 - 7);
            Point point10 = new Point(x0 + 20, y0 - 7);
            Point point11 = new Point(x0 + 20, y0);
            Point[] curvePoints = { point1, point2, point3, point4, point5, point6, point7, point8, point9, point10, point11 };
            e.Graphics.FillPolygon(blueBrush, curvePoints);
                   
                }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            
 
            if (x0 > 0)
                xDir = 1;
            if (x0 + 60 == pictureBox1.Width)
            {
                xDir = 0;
                yDir = -4;
            }
            if (y0 > 0)
                yDir = 0;
            
            if (y0+35 > pictureBox1.Height)
                yDir = -1;
            x0 += xDir;
            y0 += yDir;
            pictureBox1.Invalidate();
 
        }
 
        private void trackBar1_Scroll(object sender, EventArgs e)
        {
 
            timer1.Interval = trackBar1.Value;
        }
        
        private void start_Click(object sender, EventArgs e)
        {
 
            timer1.Start();
        }
 
        private void stop_Click(object sender, EventArgs e)
        {
 
            timer1.Stop();
        }
 
        public Color CircleColor
        {
            get
            {
                if (radioButton1.Checked)
                    return Color.Black;
                if (radioButton2.Checked)  
                    return Color.Gray;
                if (radioButton3.Checked)
                    return Color.Red;
                if (radioButton4.Checked)
                    return Color.Yellow;
                if (radioButton5.Checked)
                    return Color.Green;
                return Color.Blue;
            }
            set
            {
                if (value == Color.Black)
                    radioButton1.Checked = true;
                if (value == Color.Gray)  
                    radioButton2.Checked = true;
                if (value == Color.Red)
                    radioButton3.Checked = true;
                if (value == Color.Yellow)
                    radioButton4.Checked = true;
                if (value == Color.Green)
                    radioButton5.Checked = true;
                if (value == Color.Blue)
                    radioButton6.Checked = true;
            }
        }
 
        private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                Point pt = new Point(e.X, e.Y);
                if (path.IsVisible(pt))
                {
                    Form1 form = new Form1();
                    form.CircleColor = myColor;
                    if (form.ShowDialog() == DialogResult.OK)
                    {
                        myColor = form.CircleColor;
                        pictureBox1.Invalidate();
                    }
                }
            }
        }
 
 
    }
 
 
 
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.06.2013, 12:53
Ответы с готовыми решениями:

Как нарисовать след (траекторию движения центра тяжести) при параллельном переносе фигуры
Здравствуйте! Делаю лабораторную, не могу разобраться, как нарисовать след (траекторию движения центра тяжести) при параллельном переносе...

Траектория движения фигуры
Подскажите,пожалуйста, нужно написать алгоритм программы, кторая задает определенную границу, за которую нельзя выходить, и внутри этой...

Рисование на Canvas (движения фигуры)
Всем приветики! помогите с задачкой: Создать программу(оболочку) для отображения движения фигуры в виде звезды по кругу с помощью...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.06.2013, 12:53
Помогаю со студенческими работами здесь

Реализация движения фигуры по форме
Прошу помогите! Нужно реализовать такую штуку: необходимо осуществить движение фигуры по форме так что бы за ней не оставалось следа. Но...

Прога движения фигуры по экрану.
Люди, подскажите пожалуйста код программы движения фигуры по экрану... маленький прямоугольник движется по контуру экрана... клавиша...

Как зациклить анимацию движения фигуры
Добрый вечер. Я только недавно начал изучать этот язык.Помогите пожалуйста с циклом. У меня есть форма(круг) и два таймера. Я сделал...

Написать процедуру движения фигуры по квадратной траектории
Написать процедуру движения фигуры по квадратной траектории. Вид фигуры задать процедурным типом. Показать движение трех различных фигур.

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru