Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 02.12.2017
Сообщений: 26
1
.NET 4.x

Написать программу, которая выводила бы на весь экран монитора случайно точки пока вы не нажмете Esc

01.05.2018, 12:00. Просмотров 2116. Ответов 2
Метки нет (Все метки)


Всем привет вот такая вот задачка.


Написать программу, которая выводила бы в графическом режиме на весь экран монитора, кроме окружности с центром (200,200) и радиусом 80, случайно точки до тех пор, пока Вы не нажмете Esc.

Как такое организовать ?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.05.2018, 12:00
Ответы с готовыми решениями:

Написать программу, которая выводила бы на экран картинку
Написать программу, которая выводила бы на экран картинку. При этом каждый очередной прямоугольник...

Написать программу, которая в зависимости от введённого числа выводила бы на экран:
Написать программу, которая в зависимости от введённого числа выводила бы на экран:если 1, 2, 3, 4,...

Написать программу, которая выводила бы на экран количество ОЗУ до/вместо загрузки ОС
Здравствуйте, мне нужно написать программу на ассемблере, которая выводила бы на экран количество...

Написать программу которая заполняет весь экран символом '#'. C++ Цикл оператор
C++ Цикл оператор

2
530 / 448 / 311
Регистрация: 24.09.2013
Сообщений: 3,203
Записей в блоге: 1
01.05.2018, 23:42 2
Лучший ответ Сообщение было отмечено Darckan как решение

Решение

Ниже приведен код. Результат: По условию был запущен таймер, который генерировал точки на экране, счетчик насчитал 500 точек и ни одна из них не попала внутрь круга.
Для запуска и остановки таймера предусмотрена 1 кнопка: включить -выключить
Для наглядности, вместо точек(плохо видны) программа генерирует квадратики 2Х2 красного цвета
Для показаний счетчика установите текстбокс
Отдельно утром напишу код установки круга или напишите сами точно по условию?

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
Forms Code
{
   public partial class Form1 : Form
    {
        Random rnd = new Random();
          int x, y, y0, t;
           Boolean bl;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            t = 0; 
            bl = true;
        }
 
       private void button1_Click(object sender, EventArgs e)  // Кнопка пуска- остановки таймера
       {
            if (bl == true)
            {
                timer1.Start();
                button1.Text = "Start";
            }
            else
            {
                timer1.Stop();
                button1.Text = "Stop";
            }
              bl = !bl;
       }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
             Graphics g = CreateGraphics();
               Pen pn = new Pen(Color.Red,2);
 
            x = rnd.Next(50, 550);
               y = rnd.Next(50, 450);
               if (x < 120 || x > 280)
               {
 
                   g.DrawRectangle(pn, x, y, 2, 2);
                   g.Dispose();
               }
               else if (x >= 120 && x <= 280)
               {
                   y0 = Convert.ToInt32(Math.Sqrt(6400 - (200 - x) * (200 - x)));
                   if (y < 200 - y0 || y > 200 + y0)
                   {
                       g.DrawRectangle(pn, x, y, 2, 2);
                       g.Dispose();
                   }
               }
 
               t++; //Счетчик точек
 
            textBox1.Text = t.ToString();
        }
 
}
0
Администратор
Эксперт .NET
13107 / 10681 / 4406
Регистрация: 17.03.2014
Сообщений: 21,497
Записей в блоге: 1
02.05.2018, 00:25 3
Darckan, 1) создаем новое приложение Windows Forms.

2) Добавляем поле в форму
C#
1
Random rnd = new Random();
3) Добавляем на форму таймер и даем ему название timerDraw. Добавляем обработчик события Tick со следующим кодом:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const int CIRCLE_X = 200;
const int CIRCLE_Y = 200;
const int CIRCLE_RADIUS = 80;
 
int formWidth = this.ClientRectangle.Width;
int formHeight = this.ClientRectangle.Height;
using (var graphics = CreateGraphics())
{
    // Рисуем 10 точек на каждом тике таймера чтобы поле быстрее заполнялось
    for (int i = 0; i < 10; i++)
    {
        int x = rnd.Next(formWidth);
        int y = rnd.Next(formHeight);
        double d = Math.Sqrt((x - CIRCLE_X) * (x - CIRCLE_X) + (y - CIRCLE_Y) * (y - CIRCLE_Y));
        if (d > CIRCLE_RADIUS)
        {
            graphics.FillRectangle(Brushes.Red, x, y, 3, 3);
        }
    }
}
4) Добавляем обработчик события Load для формы со следующим кодом
C#
1
2
3
4
5
6
7
8
9
10
// Отображение формы на весь экран
TopMost = true;
this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;
 
// Черный цвет фона для наглядности
this.BackColor = Color.Black;
 
// Включаем таймер рисования
timerDraw.Enabled = true;
5) Чтобы форма закрывалась по Esc добавляем обработчик события KeyUp для формы со следующим кодом
C#
1
2
3
4
5
if (e.KeyCode == Keys.Escape)
{
    timerDraw.Enabled = false;
    Close();
}
zna926, внутри timer1_Tick не всегда вызывается Dispose() для объекта Graphics g и вообще не вызывается для Pen pn. Первый имеет смысл окружить using-ом, второй сделать полем формы чтобы он создавался один раз. Dispose() для него можно вызвать в событии закрытия формы или в переопределенном методе Dispose(bool).
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.05.2018, 00:25

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Напишите программу, которая по введённым с клавиатуры данным выводила бы ваше имя на экране монитора
Напишите программу, которая по введённым с клавиатуры данным выводила бы ваше имя на экране...

Создать программу, которая с помощью цикла выводила на экран все поля объектов на экран, любой глубины вложенности
3) Цикл for..in + вложенные объекты (рекурсия) Создать программу, которая с помощью цикла выводила...

Составьте программу, которая бы выводила на экран сведения о студентах
Группа из семи студентов сдала 2 экзамена по двум различным предметам. Оценки от 2 до 5. Составьте...

Написать программу, которая выводила бы 2 колонки с цифрами
Нужно написать программу, которая выводила бы 2 колонки с цифрами (в данном случае зарплата и...

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

Составить программу рисования шахматной доски во весь экран монитора
Составить программу рисования шахматной доски во весь экран монитора.


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.