Рисование на форме - C# (201899)

Узнай цену своей работы

Формулировка задачи:

Есть ли где-то краткое руководство по рисованию геометрических фигур на форме? Или какой-нибудь сайт полезный. Киньте ссылку, пожалуйста.

Решение задачи: «Рисование на форме»

textual
Листинг программы
using System;
using System.Drawing;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        BufferedGraphics _bufferedGraphics;
 
        Pen _pen;
        Rectangle _rectHouse; //Прямоугольник дома
        //Rectangle _rectChimney; //Прямоугольник дымовой трубы
        Point[] _pointsHousetop; //Крыша дома
 
        public Form1()
        {
            InitializeComponent();
 
            StartPosition = FormStartPosition.CenterScreen;
            Size = new Size(700, 600);
 
            InitializeGraphics();
            InitializeCoordinates();
 
            _pen = new Pen(Color.Black, 3);
            
            Paint += new PaintEventHandler(Form1_Paint);
            Resize +=new EventHandler(Form1_Resize);
        }
 
        private void InitializeCoordinates()
        {
            const int widthHouse = 140;
            const int heightHouse = 80;
            _rectHouse = new Rectangle(ClientSize.Width / 2 - widthHouse / 2, ClientSize.Height / 2 - heightHouse / 2, widthHouse, heightHouse);
 
            const int underhang = 8; //отступ влево и вправо нижних углов треугольника крыши
            const int heightHousetop = 45; //высота треугольника крыши
            if (_pointsHousetop == null)
                _pointsHousetop = new Point[5];
            _pointsHousetop[0] = new Point(_rectHouse.X - underhang, _rectHouse.Y);
            _pointsHousetop[1] = new Point(_rectHouse.X + _rectHouse.Width / 2, _rectHouse.Y - heightHousetop);
            _pointsHousetop[2] = new Point(_rectHouse.Right + underhang, _rectHouse.Y);
            _pointsHousetop[3] = new Point(_pointsHousetop[0].X, _pointsHousetop[0].Y);
            _pointsHousetop[4] = new Point(_pointsHousetop[1].X, _pointsHousetop[1].Y); //снова получаем координату верхней точки треугольника крыши, чтобы левый нижний угол был острый при отрисовке
        }
 
        private void InitializeGraphics()
        {
            _bufferedGraphics = BufferedGraphicsManager.Current.Allocate(CreateGraphics(), ClientRectangle);
        }
 
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            DrawToBuffer();
        }
 
        private void Form1_Resize(object sender, EventArgs e)
        {
            InitializeCoordinates();
            InitializeGraphics();
            Invalidate();
        }
 
        private void DrawToBuffer()
        {
            _bufferedGraphics.Graphics.Clear(BackColor);
            _bufferedGraphics.Graphics.DrawRectangle(_pen, _rectHouse);
            _bufferedGraphics.Graphics.DrawLines(_pen, _pointsHousetop);
            _bufferedGraphics.Render();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5