Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 02.04.2014
Сообщений: 13
1

Функция отрисовки сетки в элементе picturebox не отрабатывается при загрузке формы (Form)

20.03.2015, 12:19. Показов 1027. Ответов 6
Метки нет (Все метки)

Доброго времени суток.


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



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
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 WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
                 
                }
        
        private void Form1_Load(object sender, EventArgs e)
        {
            DrawGridlines();                   
        }
 
 
private void DrawGridlines()
        {
            int columnCount = 10;
            int rowCount = 10;
            Pen myPen = new Pen(Color.Red, 1);
            using (Graphics g = this.pictureBox1.CreateGraphics())
            {
                for (int xPos = 1; xPos < columnCount; xPos++)
                {
                    for (int yPos = 1; yPos < rowCount; yPos++)
                    {
                        g.DrawLine(
                            myPen,
                            xPos * this.pictureBox1.Width / columnCount,
                            0,
                            xPos * this.pictureBox1.Width / columnCount,
                            this.pictureBox1.Height);
                        g.DrawLine(
                            myPen,
                            0,
                            yPos * this.pictureBox1.Height / rowCount,
                            this.pictureBox1.Width,
                            yPos * this.pictureBox1.Height / rowCount);
                    }
                }
            }
 
        }
 
   }
}
Вправьте, мне, пожалуйста, мозги: что я упускаю, почему не отрабатывается код?

Вторая задача: когда форма сворачивается, линии теряются. По любым события формы, функция DrawGridlines() не отрабатывается.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.03.2015, 12:19
Ответы с готовыми решениями:

Как установить курсор на элементе при загрузке формы
У меня есть на форме два текстбокса. Я хочу чтобы при загрузке формы курсор автоматом установился...

Отрисовка графика в pictureBox при загрузке формы
Доброй ночи! Есть форма, в которой располагается pictureBox1, на котором рисуется график с...

Нарисовать квадрат в PictureBox при загрузке формы
При запуске формы должен отображаться квадратик. Все делаю через pictureBox но ничего не работает....

Прозрачный фон у картинки на элементе PictureBox непрозрачен для другого PictureBox
Здравствуйте! Проблема состоит в следующем! У меня есть картинка .png с прозрачным фоном. При...

6
Эксперт .NETАвтор FAQ
10297 / 5032 / 1820
Регистрация: 11.01.2015
Сообщений: 6,224
Записей в блоге: 34
20.03.2015, 13:30 2
skyfireball,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            var g = e.Graphics;
 
            for (int xPos = 1; xPos < columnCount; xPos++)
            {
                for (int yPos = 1; yPos < rowCount; yPos++)
                {
                    g.DrawLine(
                        myPen,
                        xPos * this.pictureBox1.Width / columnCount,
                        0,
                        xPos * this.pictureBox1.Width / columnCount,
                        this.pictureBox1.Height);
                    g.DrawLine(
                        myPen,
                        0,
                        yPos * this.pictureBox1.Height / rowCount,
                        this.pictureBox1.Width,
                        yPos * this.pictureBox1.Height / rowCount);
                }
            }
        }
0
0 / 0 / 0
Регистрация: 02.04.2014
Сообщений: 13
20.03.2015, 14:28  [ТС] 3
да, но как привязать этот код к событию загрузки формы?
0
Эксперт .NETАвтор FAQ
10297 / 5032 / 1820
Регистрация: 11.01.2015
Сообщений: 6,224
Записей в блоге: 34
20.03.2015, 16:05 4
Цитата Сообщение от skyfireball Посмотреть сообщение
да, но как привязать этот код к событию загрузки формы?
Этот код - обработчик события Paint у pictureBox1.
0
0 / 0 / 0
Регистрация: 02.04.2014
Сообщений: 13
20.03.2015, 16:16  [ТС] 5
да, это обработчик у PictureBox.
но как произвести отрисовку рисунка, сетки в данном случае, при загрузке формы.

как не прикидывал варианты, все никак не получается.


PS: просто ни один вариант, ни мой, ни Ваш, не отрабатывает в момент загрузки формы. А вот если его привязать к какому-то событию, например, к нажатию кнопки или клику на сам picturebox, то все отрисовывается.
0
Эксперт .NETАвтор FAQ
10297 / 5032 / 1820
Регистрация: 11.01.2015
Сообщений: 6,224
Записей в блоге: 34
20.03.2015, 16:25 6
Не знаю о чем вы. Код рабочий.
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
using System.Drawing;
using System.Windows.Forms;
 
namespace WindowsFormsApplication264
{
    public partial class Form1 : Form
    {
        private PictureBox pictureBox1;
 
        public Form1()
        {
            InitializeComponent();
 
            pictureBox1 = new PictureBox {SizeMode = PictureBoxSizeMode.AutoSize, Parent = this, ImageLocation = @"http://cs619125.vk.me/v619125588/7446/AAluJPDNL5U.jpg" };
            pictureBox1.Paint += pictureBox1_Paint;
        }
 
        private int columnCount = 5;
        private int rowCount = 5;
        private Pen myPen = Pens.Black;
 
        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            var g = e.Graphics;
 
            for (int xPos = 1; xPos < columnCount; xPos++)
            {
                for (int yPos = 1; yPos < rowCount; yPos++)
                {
                    g.DrawLine(
                        myPen,
                        xPos * this.pictureBox1.Width / columnCount,
                        0,
                        xPos * this.pictureBox1.Width / columnCount,
                        this.pictureBox1.Height);
                    g.DrawLine(
                        myPen,
                        0,
                        yPos * this.pictureBox1.Height / rowCount,
                        this.pictureBox1.Width,
                        yPos * this.pictureBox1.Height / rowCount);
                }
            }
        }
    }
}
Функция отрисовки сетки в элементе picturebox не отрабатывается при загрузке формы (Form)
1
0 / 0 / 0
Регистрация: 02.04.2014
Сообщений: 13
20.03.2015, 17:28  [ТС] 7
ну вот, я же говорю, что я чего-то забыл, а именно добавить при инициализации

C#
1
pictureBox1.Paint += pictureBox1_Paint;
спасибо большое за помощь
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.03.2015, 17:28

Зацикливание отрисовки формы при использовании OpenGL во фрейме
Всем добрый день. Я новичок в работе с графикой, но возникла необходимость отрисовки большого...

Отрисовка picturebox при загрузке
При загрузке формы в picturebox сразу должна происходить прорисовка, чего не происходит. Пробовал...

Не отрабатывается функция DateDiff
Здравствуйте! Поручили переработать выборку, чтобы в отчете в поле стаж считались года. До этого в...

Имя картинки в label при загрузке в pictureBox
Привет, при нажатии кнопки button1 открывается диалог. Есть возможность загрузить 1 или 2...

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

MDI-формы. Максимизация окна при загрузке формы
Товарищи программисты! Случилась следующая проблема: я делаю приложение, использующее MDI-формы....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru