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

Просьба поправить, что неправильно понимаю в коде

10.11.2017, 15:13. Показов 892. Ответов 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
using System;
using System.Drawing;
using System.Windows.Forms;
 
namespace Example1_1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.SetStyle(ControlStyles.ResizeRedraw, true);
            this.BackColor = Color.White;
        }
 
        protected override void OnPaint(PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            // Following codes draw a line from (0, 0) to (1, 1) in unit of inch:
            g.PageUnit = GraphicsUnit.Inch;
            Pen blackPen = new Pen(Color.Blue, 3 / g.DpiX);
            g.DrawLine(blackPen, 0, 0, 3, 3);
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
    }
}
Пробовал делать примеры, все получилось, спасибо за подсказки.
Но, вот с пониманием кода, что заложено в логику(какие переменные, методы, классы, делегаты и пр.) проблема.
Много читал смотрел ролики, чтобы было какое-то представление.
Начну по порядку сверху:
1.
C#
1
2
3
using System;
using System.Drawing;
using System.Windows.Forms;//подключаются пространства имен, для использования методов, классов из них, чтобы не писать полный путь до них.
2.
C#
1
2
3
4
5
6
7
8
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.SetStyle(ControlStyles.ResizeRedraw, true);
            this.BackColor = Color.White;
        }
Класс Form1 наследует класс Form. Объявляется конструктор класса Form1, в котором:
происходит InitializeComponent() судя по справке происходит загрузка откомпилированной страницы компонента(что не совсем понятно, что имеется ввиду).
this.SetStyle(ControlStyles.ResizeRedraw, true); вызывается метод SetStyle, в котором устанавливается флаг, для перерисовки, при изменении размера.
this.BackColor = Color.White; задается цвет фона

3.
C#
1
2
3
4
5
6
7
8
        protected override void OnPaint(PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            // Following codes draw a line from (0, 0) to (1, 1) in unit of inch:
            g.PageUnit = GraphicsUnit.Inch;
            Pen blackPen = new Pen(Color.Blue, 3 / g.DpiX);
            g.DrawLine(blackPen, 0, 0, 3, 3);
        }
Вот здесь для меня сложно понять. Вызывается метод OnPaint, он принимает PaintEventArgs e. Больше похоже на делегат, но не вижу переменной объявленной делегатом. И это вроде, как бы функция, но не видно, где она принимает значение.

C#
1
2
3
g.PageUnit = GraphicsUnit.Inch;//здесь задается размер в дюймах
Pen blackPen = new Pen(Color.Blue, 3 / g.DpiX);//цвет линии и ее толщина
g.DrawLine(blackPen, 0, 0, 3, 3);//длина линии
4.
C#
1
2
3
4
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
Вообще не могу понять для чего это.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.11.2017, 15:13
Ответы с готовыми решениями:

Что неправильно в этом коде?
Код то простой, но почему-то он неправильно воспроизводится, почему? namespace...

Что поправить в коде?
Задание:1) вывести количество строк, содержащих 0 2) номер столбца, в котором...

Не понимаю,что не так в коде
Всем здрасте! Столкнулся со следующей проблемой. На ранних этапах изучения C++ сам себе придумываю...

Создание квадрата в указанном месте, нужно кое-что поправить в коде
Здравствуйте, вообщем задача сделать квадрат в указанном месте, сначала с указанной областью,...

3
210 / 207 / 146
Регистрация: 20.11.2014
Сообщений: 1,161
10.11.2017, 16:27 2
почитайте что такое виртуальные методы и все станет понятно
0
0 / 0 / 1
Регистрация: 25.02.2016
Сообщений: 134
10.11.2017, 16:46  [ТС] 3
Читал, мне как "чайнику" сложно понять. Если можно "своими словами объяснить", тогда лучше пойму, когда по новой читать буду.
0
0 / 0 / 1
Регистрация: 25.02.2016
Сообщений: 134
14.11.2017, 21:30  [ТС] 4
Кажется разобрался с методом OnPaint.
Чтобы отрисовать графику нужно подключить обработчик событий Paint.
C#
1
2
form = new Form();
form.Paint    += new PaintEventHandler(MyPaintHandler);
и потом определить статический метод
C#
1
2
3
4
static void MyPaintHandler(object objSender, PaintEventArgs pea)
      {
       //здесь производить отрисовку графики
       }
Но, вместо этого можно сделать предопределение через OnPaint.
C#
1
2
3
4
protected override void OnPaint(PaintEventArgs e)
        {
         //здесь производить отрисовку графики
         }
Как я понял тогда не нужно подключать обработчик события Paint и не нужен objSender.
Интересно узнать, какие преимущества второго варианта перед вторым?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.11.2017, 21:30

Что в коде неправильно?
#include <vcl.h> #pragma hdrstop #include <windows.h> #include "Unit3.h"...

Что неправильно в коде?
Ребят, подскажите что неправильно в коде? dcl package SQLStmt stmtLimit (‘select b.iD, b.aInc,...

Что неправильно в коде?
Я хочу задействовать смену дивов, но почему то код не работает. Подскажите в чем проблема <div...

Не понимаю, что за ошибка в коде. Скрин ошибки внутри
Я не понимаю, что за ошибка и как исправить, помогите, кому не трудно, разобраться... Работаю с...


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

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

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