Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2018, 21:46   #1
rizhkon
 
Регистрация: 01.04.2018
Сообщений: 4
По умолчанию Как перерисовать при щелчке мыши

Здравствуйте, написал код для прорисовки эллипса и движущегося по его контуру круга, нужно сделать так чтобы при нажатии на любую область панели, всё это перерисовывалось на центр курсора, никак не могу понять как это сделать вот код

Код:
namespace WindowsFormsApp17
{
    public partial class Form1 : Form
    {
        Graphics graphics;
        Pen pen;
        double ugol;
        int x, y, r;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            graphics = panel1.CreateGraphics();
            pen = new Pen(Color.Black);
            graphics.DrawEllipse(pen, Width / 2 - 100, Height / 2 - 50, 200, 100);


            timer1.Start();
            r = 200;
            ugol = 0;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            ugol += 0.01;
            if (ugol > Math.PI * 2)
                ugol = 0;
            x = (int)(r * Math.Cos(ugol));
            y = (int)(r / 2 * Math.Sin(ugol));
            GetDisplayXY(x, y, out x, out y);
            panel1.Refresh();
        }

        private void panel1_Paint(object sender, PaintEventArgs e)
        {

        }
        private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
        {
            x = e.X; y = e.Y;
            graphics.DrawEllipse(pen, 400 - 200, 225 - 100, 400, 200);
            graphics.DrawEllipse(pen, x - 50, y - 50, 100, 100);
            GetDisplayXY(x, y, out x, out y);
        }
        private void GetDisplayXY(double x, double y, out int xe, out int ye)
        {
            x += Width / 2;
            y += Height / 2; y = Height - y;
            xe = (int)(x);
            ye = (int)(y);
        }
    }
}

Последний раз редактировалось Alex11223; 01.04.2018 в 22:03.
rizhkon вне форума Ответить с цитированием
Старый 01.04.2018, 22:05   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Рисовать в Paint надо, иначе будет попадать.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 01.04.2018, 22:35   #3
rizhkon
 
Регистрация: 01.04.2018
Сообщений: 4
По умолчанию

Извиняюсь, ошибся

Код:
 public partial class Form1 : Form
    {
        Graphics graphics;
        Pen pen;
        double ugol;
        int x, y, r;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            graphics = panel1.CreateGraphics();
            pen = new Pen(Color.Black);



            timer1.Start();
            r = 200;
            ugol = 0;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            ugol += 0.01;
            if (ugol > Math.PI * 2)
                ugol = 0;
            x = (int)(r * Math.Cos(ugol));
            y = (int)(r / 2 * Math.Sin(ugol));
            GetDisplayXY(x, y, out x, out y);
            panel1.Refresh();
        }

        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            graphics.DrawEllipse(pen, Width / 2 - 200, Height / 2 - 100, 400, 200);
            graphics.DrawEllipse(pen, x - 50, y - 50, 100, 100);
            GetDisplayXY(x, y, out x, out y);
        }
        private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
        {
           ВОТ Я ТАК ПОНИМАЮ СЮДА НАДО ЧТО ТО ВПИСАТЬ!!!!
        }
        private void GetDisplayXY(double x, double y, out int xe, out int ye)
        {
            x += Width / 2;
            y += Height / 2; y = Height - y;
            xe = (int)(x);
            ye = (int)(y);
        }
    }
}
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 02.04.2018 в 09:28.
rizhkon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CMFCMaskedEdit -- при щелчке "мыши" курсор попадал на первый символ в нём? erslgoeirjh Visual C++ 3 22.02.2018 17:31
combobox - как при рисовании вручную перерисовать выбранный элемент Ilya48 C# (си шарп) 0 25.06.2012 15:42
как сделать на winформе сменяющиеся при щелчке картинки С++ kuznez Помощь студентам 0 29.03.2012 09:57
delphi, при щелчке по пустой форме, создается кнопка, при щелчке на кнопку, она становится цветная KaZaaM Помощь студентам 5 15.05.2010 00:48
EmbeddedWB. Как вызвать окно сохранения файла при щелчке по ссылке apx_angel Работа с сетью в Delphi 0 22.11.2009 20:38