Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/29: Рейтинг темы: голосов - 29, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 27.02.2018
Сообщений: 35
1

Отрисовка рисунка при загрузке формы

27.02.2018, 11:37. Показов 5952. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, такой вопрос, имеется рисунок. Как сделать так, чтобы он отрисовывать в pictureBox при загрузке формы?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2018, 11:37
Ответы с готовыми решениями:

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

Не происходит отрисовка пользовательского контрола при загрузке формы
using System; using System.Collections.Generic; using System.ComponentModel; using...

Масштабирование рисунка при разворачивании формы
Я столкнулся с проблемой в C#.Я например, нарисовал пингвина, он находиться в левом углу. Как...

Отрисовка (стираются части рисунка)
Есть объект panel. На нем я рисую эллипс. Когда убираю форму за экран, потом возвращаю - рисунок...

14
12 / 12 / 9
Регистрация: 25.02.2018
Сообщений: 25
27.02.2018, 12:27 2
На событие Load для формы (дважды кликните мышкой по форме):
C#
1
2
3
4
private void Form1_Load(object sender, EventArgs e)
{
      pictureBox1.Image = Image.FromFile("E:\\1.png"); // сдесь укажите путь к рисунку
}
1
0 / 0 / 0
Регистрация: 27.02.2018
Сообщений: 35
27.02.2018, 18:14  [ТС] 3
Не совсем то, но спасибо. Я немного не так выразился. Попробую нагляднее
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace 111
{
    public partial class Form1 : Form
    {
        int a, xc, yc; 
        double[] x = new double[4];
        double[] y = new double[4];
        Point[] p1 = new Point[4];//массив точек для ромба 
 
        private void Form1_Load(object sender, EventArgs e)
        {
            a = 80; //размер фигуры
            //расположение фигуры в левом нижнем углу
            xc = Convert.ToInt32(a/2);
            yc = Convert.ToInt32(pictureBox1.Height - a / 2);
            //координаты точек фигуры относительно центра
            x[0] = Convert.ToInt32(0);
            y[0] = Convert.ToInt32(-a / 2.0);
            x[1] = Convert.ToInt32(a / 2.0);
            y[1] = Convert.ToInt32(0);
            x[2] = Convert.ToInt32(0);
            y[2] = Convert.ToInt32(a / 2.0);
            x[3] = Convert.ToInt32(-a / 2.0);
            y[3] = Convert.ToInt32(0);
            ris();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            ris();
        }
 
        public Form1()
        {
            InitializeComponent();
        }
        private void ris()
        {
            Graphics g = pictureBox1.CreateGraphics();
            xc = Convert.ToInt32(a / 2);
            yc = Convert.ToInt32(pictureBox1.Height - a / 2);
            Brush br1 = new SolidBrush(Color.FromArgb(0, 255, 0));
            Brush br2 = new SolidBrush(Color.FromArgb(255, 0, 0));
            Brush br3 = new SolidBrush(Color.FromArgb(0, 255, 0));
            g.Clear(SystemColors.Control);
 
            p1[0] = new Point((int)(x[0] + xc), (int)(y[0] + yc));
            p1[1] = new Point((int)(x[1] + xc), (int)(y[1] + yc));
            p1[2] = new Point((int)(x[2] + xc), (int)(y[2] + yc));
            p1[3] = new Point((int)(x[3] + xc), (int)(y[3] + yc));
            g.FillEllipse(br1, xc-(a/2),yc-(a/2), a, a);
            g.FillPolygon(br2, p1);
            g.FillEllipse(br3, xc - (a / 4), yc - (a / 4), a / 2, a / 2);
        }
    }
}
картинка рисуется после нажатия, а мне надо при загрузке формы. Возможно ли это реализовать.
0
12 / 12 / 9
Регистрация: 25.02.2018
Сообщений: 25
27.02.2018, 18:41 4
Цитата Сообщение от Vadimustus Посмотреть сообщение
картинка рисуется после нажатия, а мне надо при загрузке формы
Все равно не совсем понятно что нужно делать... Вы же вызываете метод ris() при загрузке формы. Или его не достаточно?

Добавлено через 20 минут
Если картинка рисуется после нажатия, то можно выполнить нажатие нужной кнопки программно при загрузке формы:
C#
1
button1.PerformClick();
0
0 / 0 / 0
Регистрация: 27.02.2018
Сообщений: 35
27.02.2018, 20:20  [ТС] 5
метод ris() не рисует фигуры при загрузке формы, а только после нажатия кнопки. Нужно чтобы при загрузке формы сразу рисовались фигуры, без нажатия на кнопку. Хотелось бы узнать как это реализовать.

Добавлено через 18 секунд
C#
1
button1.PerformClick();
не получилось

Добавлено через 16 минут
Я пробовал вставить метод ris() в Load но ничего не происходит
0
31 / 31 / 18
Регистрация: 16.09.2015
Сообщений: 246
27.02.2018, 20:50 6
Цитата Сообщение от Vadimustus Посмотреть сообщение
Я пробовал вставить метод ris() в Load но ничего не происходит
а если в Shown?
0
0 / 0 / 0
Регистрация: 27.02.2018
Сообщений: 35
27.02.2018, 21:19  [ТС] 7
Тоже не рисует
0
27 / 0 / 1
Регистрация: 01.06.2017
Сообщений: 128
28.05.2018, 17:38 8
Вы решили эту проблему? получилось нарисовать фигуру при загрузке формы???
0
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
28.05.2018, 18:42 9
Vadimustus, IrenaIT, чтобы нарисовать что-либо при загрузке формы нужно использовать событие Paint, а не Load. Дело в том, что Paint возникает позже чем Load и если в нем будет пусто, то графика из Load просто затрется. Правда, нужно учитывать, что Paint, в отличие от Load, возникает не однократно при загрузке формы, а при каждой перерисовке. К примеру, при изменении размера.
1
27 / 0 / 1
Регистрация: 01.06.2017
Сообщений: 128
28.05.2018, 18:46 10
да,спасибо))) уже сделала с помощью Paint
0
0 / 0 / 0
Регистрация: 27.02.2018
Сообщений: 35
13.06.2018, 15:50  [ТС] 11
Тут интересный момент получается, фигура то рисуется, суть в том что если вы отрисовать фигуру и свернули окно, то после его открытия фигура исчезает. Получается при запуске программы фигура отрисовывать сразу, но из-за того что окно не успевает полностью прогрузится просто пропадает. Лично я решил это таймером перед отрисовкой в лоад.
0
910 / 795 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
13.06.2018, 16:09 12
Vadimustus, это решать надо событием Paint как описано в сообщении #9, а не таймером.
0
Эксперт .NET
10571 / 6495 / 1506
Регистрация: 25.05.2015
Сообщений: 19,673
Записей в блоге: 14
13.06.2018, 20:09 13
Вообще это (если вопрос о программе, а не её отдельной форме) называется Splash Screen и реализуется совершенно иначе. Отдельной формой, например, в своём отдельном же потоке.

Добавлено через 1 минуту
Splash скрин без заднего фона
0
0 / 0 / 0
Регистрация: 27.02.2018
Сообщений: 35
13.06.2018, 20:50  [ТС] 14
Мне в дальнейшем надо было запускать фигуру по дуге и заставить крутиться, причем скорость вращения, перемещения и размер фигуры задается пользователем. Ничего лучше я не придумал.
0
Эксперт .NET
1696 / 1325 / 316
Регистрация: 15.06.2012
Сообщений: 5,046
Записей в блоге: 3
14.06.2018, 14:36 15
как-то так...
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
using System;
using System.Drawing;
using System.Windows.Forms;
 
namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            Controls.Add(new CustomPictureBox
            {
                Location = new Point(12, 12),
                Name = "pictureBox1",
                Size = new Size(200, 200),
                TabIndex = 0,
                TabStop = false
            });
 
            InitializeComponent();
        }
    }
 
    public class CustomPictureBox : Control
    {
        private int size;
        private Rectangle outCircleRectangle;
        private Rectangle inCircleRectangle;
        private Point[] rhombusPoints;
        private int _x;
        private int _y;
 
        public CustomPictureBox(int a = 80)
        {
            size = a;
            SetPoints();
        }
 
        protected override void OnResize(EventArgs e)
        {
            base.OnResize(e);
            SetPoints();
        }
 
        protected override void OnPaint(PaintEventArgs pe)
        {
            base.OnPaint(pe);
 
            var g = pe.Graphics;
            var br1 = new SolidBrush(Color.FromArgb(0, 255, 0));
            var br2 = new SolidBrush(Color.FromArgb(255, 0, 0));
            var br3 = new SolidBrush(Color.FromArgb(0, 255, 0));
 
            g.Clear(SystemColors.Control);
 
            g.FillEllipse(Brushes.Green, outCircleRectangle);
            g.FillPolygon(Brushes.Red, rhombusPoints);
            g.FillEllipse(Brushes.Green, inCircleRectangle);
        }
 
        private void SetPoints()
        {
            _x = size / 2;
            _y = Height - size / 2;
 
            outCircleRectangle = new Rectangle(_x - (size / 2), _y - (size / 2), size, size);
            inCircleRectangle = new Rectangle(_x - (size / 4), _y - (size / 4), size / 2, size / 2);
            rhombusPoints = new[]
            {
                new Point(size / 2, Height - size),
                new Point(size, Height - size / 2),
                new Point(size / 2, Height),
                new Point(0, Height - size / 2),
            };
            
        }
    }
}
0
14.06.2018, 14:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2018, 14:36
Помогаю со студенческими работами здесь

Отрисовка изображения при открытии формы
Вопрос очень простой, но не понятный для меня. Приведу простейший пример using System; using...

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

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

Отрисовка рисунка
Привет всем) Есть код(смотрите вложение). Как мне вместо этого if (TileMap=='E')...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru