1 / 1 / 1
Регистрация: 21.05.2012
Сообщений: 102
1

Как можно поменять координаты нарисованной линии

28.05.2012, 15:37. Показов 1039. Ответов 4
Метки нет (Все метки)

Как можно поменять координаты линии, сделанной в классе Pen?
И еще вопрос, как создать новую линию, что-бы они двигались восьмеркой? вот код. Тут выполнено 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
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
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 HW_Kh_General
{
    public partial class Form1 : Form
    {
 
        Graphics Gr;
        Image Background;
        Point p = new Point(0, 0);
        Pen pen = new Pen(Color.Black);
        double a = 8, c = 6;
        Point[] l1 = new Point[4];
        Point[] l2 = new Point[4];
        Point[] l3 = new Point[4];
        Point[] l4 = new Point[4];
        int n = 0;
        
        
        public Form1()
        {
            InitializeComponent();
            Background = Image.FromFile("Ani.jpg");
            Gr = pictureBox1.CreateGraphics();
            pen.Width = 2;
            l1[0] = new Point(Convert.ToInt32(pictureBox1.Width * 0.8), Convert.ToInt32(pictureBox1.Height * 0.34));
            l1[1] = new Point(Convert.ToInt32(pictureBox1.Width * 0.75), Convert.ToInt32(pictureBox1.Height * 0.3));
            l1[2] = new Point(Convert.ToInt32(pictureBox1.Width * 0.78), Convert.ToInt32(pictureBox1.Height * 0.25));
            l1[3] = new Point(Convert.ToInt32(pictureBox1.Width * 0.7), Convert.ToInt32(pictureBox1.Height * 0.1));
 
            l2[0] = new Point(Convert.ToInt32(pictureBox1.Width * 0.8), Convert.ToInt32(pictureBox1.Height * 0.34));
            l2[1] = new Point(Convert.ToInt32(pictureBox1.Width * 0.74), Convert.ToInt32(pictureBox1.Height * 0.3));
            l2[2] = new Point(Convert.ToInt32(pictureBox1.Width * 0.77), Convert.ToInt32(pictureBox1.Height * 0.25));
            l2[3] = new Point(Convert.ToInt32(pictureBox1.Width * 0.66), Convert.ToInt32(pictureBox1.Height * 0.1));
 
            l3[0] = new Point(Convert.ToInt32(pictureBox1.Width * 0.8), Convert.ToInt32(pictureBox1.Height * 0.34));
            l3[1] = new Point(Convert.ToInt32(pictureBox1.Width * 0.77), Convert.ToInt32(pictureBox1.Height * 0.3));
            l3[2] = new Point(Convert.ToInt32(pictureBox1.Width * 0.75), Convert.ToInt32(pictureBox1.Height * 0.25));
            l3[3] = new Point(Convert.ToInt32(pictureBox1.Width * 0.68), Convert.ToInt32(pictureBox1.Height * 0.1));
 
            l4[0] = new Point(Convert.ToInt32(pictureBox1.Width * 0.8), Convert.ToInt32(pictureBox1.Height * 0.345));
            l4[1] = new Point(Convert.ToInt32(pictureBox1.Width * 0.72), Convert.ToInt32(pictureBox1.Height * 0.3));
            l4[2] = new Point(Convert.ToInt32(pictureBox1.Width * 0.75), Convert.ToInt32(pictureBox1.Height * 0.25));
            l4[3] = new Point(Convert.ToInt32(pictureBox1.Width * 0.64), Convert.ToInt32(pictureBox1.Height * 0.1));
            //Sin = Image.;
        }
 
        void Graph()
        {
            Gr.Clear(SystemColors.ControlLightLight);
            double f,r;
            for (f = 0; f < 360; f += 0.1)
            {
                r = 10/*Увеличение, чтобы лучше рассмотреть на рисунке*/*Math.Sqrt(c * c * Math.Cos(f * 2) + Math.Sqrt(Math.Pow(c, 4) * Math.Pow(Math.Cos(2 * f), 2) + Math.Pow(a, 4) - Math.Pow(c, 4)));
                Gr.DrawRectangle(pen, Convert.ToInt32(r * Math.Cos(f) + pictureBox1.Width / 2), Convert.ToInt32(r * Math.Sin(f) + pictureBox1.Height / 2), 1, 1);//Рисование кистью точки
                r = 10*Math.Sqrt(c * c * Math.Cos(f * 2) - Math.Sqrt(Math.Pow(c, 4) * Math.Pow(Math.Cos(2 * f), 2) + Math.Pow(a, 4) - Math.Pow(c, 4)));
                try
                {
                    Gr.DrawRectangle(pen, Convert.ToInt32(r * Math.Cos(f) + pictureBox1.Width / 2), Convert.ToInt32(r * Math.Sin(f) + pictureBox1.Height / 2), 1, 1); ;
                }
                catch (OverflowException)
                {
                    //На случай странностей под корнем
                }
            }
        }
        void Ani()
        {
            Gr.Clear(SystemColors.ControlLightLight);
            timer1.Enabled = true;
            Gr.DrawImage(Background, p);
            Gr.DrawBezier(pen, l1[0], l1[1], l1[2], l1[3]);
        }
 
 
        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            timer1.Enabled = false;
            if (radioButton1.Checked)
            {
                Graph();
            }
            else if (radioButton2.Checked)
            {
                Ani();
            }
            else Gr.Clear(SystemColors.ControlLightLight);
            //Gr.Clear(SystemColors.ControlLightLight);
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            Gr.Clear(SystemColors.ControlLightLight);
            Gr.DrawImage(Background, p);
            if (n == 0)
                Gr.DrawBezier(pen, l1[0], l1[1], l1[2], l1[3]);
            else if (n == 1)
                Gr.DrawBezier(pen, l2[0], l2[1], l2[2], l2[3]);
            else if (n == 2)
                Gr.DrawBezier(pen, l3[0], l3[1], l3[2], l3[3]);
            else if (n == 3)
                Gr.DrawBezier(pen, l4[0], l4[1], l4[2], l4[3]);
            n++;
            if (n == 4)
                n = 0;
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
    }
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.05.2012, 15:37
Ответы с готовыми решениями:

Как поменять стиль линии на штрих-пунктирный
Ребята, здравствуйте! Подскажите, пожалуйста, как поменять стиль линии обыкновенной на...

График функции, как правильно поменять координаты
тут вот архив, не знаю как правильно координаты поменять..

Вычислить координаты нарисованной линии
Здравствуйте! Весь инет облазил и не могу найти не одного примера вычисления координат начерченной...

Как поменять размер нарисованной фигуры в PictureBox?
Как поменять размер нарисованной фигуры в picturebox на WinForms C#? Есть рисовалка, в ней мы...

4
Заблокирован
28.05.2012, 15:46 2
Цитата Сообщение от linkoln78 Посмотреть сообщение
Как можно поменять координаты линии, сделанной в классе Pen?
Pen - это класс отвечающий за перо (цвет, ширина кисти)

координаты у вас через
C#
1
new Point
задаются

а с таймером что не так? может просто интервал побольше поставить?
0
1 / 1 / 1
Регистрация: 21.05.2012
Сообщений: 102
28.05.2012, 15:56  [ТС] 3
Там я уже решил вопрос! подскажите, как сделать что-бы двигалось сразу 2 линии?
Вот мой проэкт
Вложения
Тип файла: rar Новая папка.rar (62.1 Кб, 10 просмотров)
0
Заблокирован
28.05.2012, 17:14 4
Вот так? или я чтото не понимаю))) Новая папка.rar
1
1 / 1 / 1
Регистрация: 21.05.2012
Сообщений: 102
28.05.2012, 17:33  [ТС] 5
Цитата Сообщение от alex_bojik Посмотреть сообщение
Вот так? или я чтото не понимаю))) Вложение 156437
Да, спасибо) А возможно ли сделать, что-бы картинка не мигала?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.05.2012, 17:33

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

Подсчет длины нарисованной линии
Рисую произвольную линию на pictureBox с помощью MouseMove зажатой лкм. Считываю координаты...

Удаление отдельно взятой нарисованной линии из формы
Добрый день. Есть PictureBox, в который необходимо нарисовать несколько линий. Это реализовано....

Рисование на pictureBox - отмена последней нарисованной линии
Здравствуйте. Честно искал по форумам, но ничего не помогло, так что решил всё-таки спросить....


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

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

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