Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 1
Регистрация: 04.12.2009
Сообщений: 18

Фигуры не отображаются в PictureBox

11.04.2011, 00:49. Показов 1458. Ответов 2
Метки нет (Все метки)

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

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
//Form1.cs
 
namespace WindowsFormsApplication6
{
    public partial class Form1 : Form
    {
        Square [ ] sqr = new Square [ 3 ];
        
        
        public Form1 ( )
        {
            InitializeComponent ( );
        }
 
        private void Form1_Load ( object sender , EventArgs e )
        {
            sqr [ 0 ] = new Square ( 50 , 100 , pictureBox1 );
            for ( int i = 0 ; i < 1 ; i++ )
            {
                sqr [ i ].SetColor ( 12 , 155 , 9 );
                sqr [ i ].Resize ( 25 );
            }
            dataGridView1.RowCount = 5;
            dataGridView1.Rows [ 0 ].Cells [ "Param" ].Value = "X-Координата";
            dataGridView1.Rows [ 1 ].Cells [ "Param" ].Value = "Y-Координата";
            dataGridView1.Rows [ 2 ].Cells [ "Param" ].Value = "Угол поворота";
            dataGridView1.Rows [ 3 ].Cells [ "Param" ].Value = "Размер";
            dataGridView1.Rows [ 4 ].Cells [ "Param" ].Value = "Цвет";
            sqr [ 0 ].Draw ( );
        }
 
 
        private void outputValues (Square _sqr)
        {
            try
            {
                dataGridView1.Rows [ 0 ].Cells [ "Value" ].Value = Convert.ToString ( _sqr.GetX ( ) );
                dataGridView1.Rows [ 1 ].Cells [ "Value" ].Value = Convert.ToString ( _sqr.GetY ( ) );
                dataGridView1.Rows [ 2 ].Cells [ "Value" ].Value = Convert.ToString ( _sqr.GetAngle ( ) );
                dataGridView1.Rows [ 3 ].Cells [ "Value" ].Value = Convert.ToString ( _sqr.GetSize ( ) );
                dataGridView1.Rows [ 4 ].Cells [ "Value" ].Value = _sqr.GetColor ( ).ToString ( );
            }
            catch ( Exception ex )
            {
                MessageBox.Show ( ex.Message );
            }
        }
        private void pictureBox1_Click ( object sender , EventArgs e )
        {
            for (int i=0; i<1; i++)
            {
                Square ps = sqr[i];
                float X = ps.GetX();
                float Y = ps.GetY();
                float size = ps.GetSize();
                float x1 = X - size / 2;
                float x2 = X + size / 2;
                float y1 = Y - size / 2;
                float y2 = Y + size / 2;
                if ( ( X >= x1 ) && ( X <= x2 ) && ( Y >= y1 ) && ( Y <= y2 ) )
                {
                    Square.Activated = ps;
                    pictureBox1.Invalidate();
                    return;
                }
            }
            Square.Activated = null;
            pictureBox1.Invalidate ( );
        }
 
        private void button1_Click ( object sender , EventArgs e )     //Задание Цвета
        {
            if (colorDialog1.ShowDialog ( ) == DialogResult.OK)
            {
                button1.BackColor = colorDialog1.Color;
                Square.Activated.SetColor ( colorDialog1.Color.R , colorDialog1.Color.G , colorDialog1.Color.B );
            }
            
        }
 
        private void btnMoveLeft_Click ( object sender , EventArgs e )
        {
            Square.Activated.Move ( -10 , 0 );
            outputValues ( Square.Activated );
            
        }
 
        private void btnMoveUp_Click ( object sender , EventArgs e )
        {
            Square.Activated.Move ( 0 , 10 );
            outputValues ( Square.Activated );
            
        }
        private void PaintBox_Draw ( object sender , PaintEventArgs e )
        {
            for ( int i = 0 ; i < 1 ; i++ ) 
            {
                sqr [ i ].Draw ( );
            }
        }
    }
}

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
//Модуль с описанием класса
 
namespace SquareClassLibrary
{
    public partial class Square
    {
 
        float xCoord;
        float yCoord;
        float Angle;
        float Size = 40;
        Graphics obj;
        Pen drawPen = new System.Drawing.Pen ( Color.Blue, 4F );
        Color squareColour = new System.Drawing.Color ( );
        PointF [ ] squareCoordinates = new PointF [ 4 ];
        public System.Windows.Forms.PictureBox pictureBox = new System.Windows.Forms.PictureBox ( );
        public static Square Activated = null;
        public Square ( float x , float y, System.Windows.Forms.PictureBox pictureBox)
        {
            xCoord = x;
            yCoord = y;
        }
        public void Move ( float dx , float dy )
        {
            xCoord += dx;
            yCoord += dy;
        }
        public void Rotate ( float ang )
        {
            Angle += ang;
        }
        public void Resize ( float sz )
        {
            Size += sz;
        }
        public void SetColor ( int Red , int Green , int Blue )
        {
            squareColour = Color.FromArgb ( Red , Green , Blue );
        }
        public float GetX ( )
        {
            return xCoord;
        }
        public float GetY ( )
        {
            return yCoord;
        }
        public float GetAngle ( )
        {
            return Angle;
        }
        public float GetSize ( )
        {
            return Size;
        }
        public Color GetColor ( )
        {
            return squareColour;
        }
        public void Draw ( )
        {
            squareCoordinates [ 0 ].X = Size / 2;
            squareCoordinates [ 0 ].Y = Size / 2;
            squareCoordinates [ 1 ].X = Size / 2;
            squareCoordinates [ 1 ].Y = -Size / 2;
            squareCoordinates [ 2 ].X = -Size / 2;
            squareCoordinates [ 2 ].Y = -Size / 2;
            squareCoordinates [ 3 ].X = -Size / 2;
            squareCoordinates [ 3 ].Y = Size / 2;
 
            double rotX , rotY;
 
            for ( int i = 0 ; i < 4 ; i++ )
            {
                rotX = squareCoordinates [ i ].X * Math.Cos ( Angle * Math.PI / 180 ) - squareCoordinates [ i ].Y * Math.Sin ( Angle * Math.PI / 180 );
                rotY = squareCoordinates [ i ].Y * Math.Cos ( Angle * Math.PI / 180 ) + squareCoordinates [ i ].X * Math.Sin ( Angle * Math.PI / 180 );
                squareCoordinates [ i ].X = Convert.ToSingle ( xCoord + rotX );
                squareCoordinates [ i ].Y = Convert.ToSingle ( yCoord + rotY ); 
            }
 
            obj = pictureBox.CreateGraphics ( );
            //System.Drawing.Brush br = new System.Drawing.SolidBrush ( squareColour );
            drawPen.Color = squareColour;
            drawPen.Width = 4F;
            obj.DrawPolygon ( drawPen , squareCoordinates );
            if ( this == Activated )
            {
                float x1 = xCoord - Size;
                float x2 = xCoord + Size;
                float y1 = yCoord - Size;
                float y2 = yCoord + Size;
                obj.DrawEllipse(drawPen, x1,y1,x2,y2); 
            }
        }
    }
}
Вложения
Тип файла: rar WindowsFormsApplication6.rar (4.75 Мб, 12 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.04.2011, 00:49
Ответы с готовыми решениями:

Не отображаются PictureBox'ы на Panel'и
Доброго времени суток! :) Суть вопроса такова: Нажимаем на кнопку и на форме динамически создаю 2 панели (panel1, panel2) и массив...

Направление фигуры в picturebox
Как сделать,чтобы фигуры двигались линейной справа налево и наоборот(в 2 ряда) Вверху окна public partial class Form1 : Form { ...

Как закрасить фигуры в pictureBox ?
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...

2
 Аватар для xseno
9 / 9 / 0
Регистрация: 09.08.2010
Сообщений: 42
11.04.2011, 03:01
попробуйте обновить pb или добавте "pictureBox1.Invalidate();" в конце алгоритма мб плможет
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void Form1_Load ( object sender , EventArgs e )
 {
 sqr [ 0 ] = new Square ( 50 , 100 , pictureBox1 );
 for ( int i = 0 ; i < 1 ; i++ )
 {
 sqr [ i ].SetColor ( 12 , 155 , 9 );
 sqr [ i ].Resize ( 25 );
 }
 dataGridView1.RowCount = 5;
 dataGridView1.Rows [ 0 ].Cells [ "Param" ].Value = "X-Координата";
 dataGridView1.Rows [ 1 ].Cells [ "Param" ].Value = "Y-Координата";
 dataGridView1.Rows [ 2 ].Cells [ "Param" ].Value = "Угол поворота";
 dataGridView1.Rows [ 3 ].Cells [ "Param" ].Value = "Размер";
 dataGridView1.Rows [ 4 ].Cells [ "Param" ].Value = "Цвет";
 sqr [ 0 ].Draw ( );
 }
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
11.04.2011, 08:10
Цитата Сообщение от Fintroll Посмотреть сообщение
В чём проблема понять никак не могу, помогите пожалуйста разобраться.
После отрисовки вызывай метод obj.Flush()
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.04.2011, 08:10
Помогаю со студенческими работами здесь

Выбрать название фигуры в ComboBox и нарисовать ее в PictureBox
Есть пока глобальная проблема, только начал изучать C# создал Windows Form свою вторую в жизни, и не могу привязать рисунок к PictureBox1 и...

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

Очистка PictureBox перед рисованием очередной фигуры
Подскажите, пожалуйста, как сделать так, чтобы при рисовании одной фигуры, прежняя стиралась ( не удалялась).

Как при нажатии правой кнопки мыши перемещать фигуры, нарисованные на PictureBox
Как при нажатии правой кнопки мыши перемещать фигуры, нарисованные на picturebox?

Как рисовать "виртуальные фигуры" на PictureBox (вопрос быстродействия)
Делаю графический редактор, рисую на picturebox. Данные о нарисованных фигурах (координаты и т.п.) заносятся в массив. Теперь о главном,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
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