Не могу нарисовать линию в Visual Studio (в форме)

236
24 октября 2019, 20:40

На форме я создал pictureBox и на нем хочу нарисовать линиями своё ФИО. Размеры pictureBox 776; 426 (залит черным цветом). Не могу понять, почему линия не хочет рисоваться.

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 DrawingLines
{
    public partial class DrawingForm : Form
    {
        public DrawingForm()
        {
            InitializeComponent();
        }
        private void DrawingForm_Load(object sender, EventArgs e)
        {
        }

        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            Graphics gr = e.Graphics;
            Pen p = new Pen(Color.White, 5);// цвет линии и ширина
            Point p1 = new Point(5, 10);// первая точка
            Point p2 = new Point(300, 400);// вторая точка
            gr.DrawLine(p, p1, p2);// рисуем линию
            gr.Dispose();// освобождаем все ресурсы, связанные с отрисовкой
        }
    }
}

Вот код формы:

namespace DrawingLines { partial class DrawingForm { /// /// Обязательная переменная конструктора. /// private System.ComponentModel.IContainer components = null;

    /// <summary>
    /// Освободить все используемые ресурсы.
    /// </summary>
    /// <param name="disposing">истинно, если управляемый ресурс должен быть удален; иначе ложно.</param>
    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        base.Dispose(disposing);
    }
    #region Код, автоматически созданный конструктором форм Windows
    /// <summary>
    /// Требуемый метод для поддержки конструктора — не изменяйте 
    /// содержимое этого метода с помощью редактора кода.
    /// </summary>
    private void InitializeComponent()
    {
        this.pictureBox1 = new System.Windows.Forms.PictureBox();
        ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
        this.SuspendLayout();
        // 
        // pictureBox1
        // 
        this.pictureBox1.BackColor = System.Drawing.SystemColors.ActiveCaptionText;
        this.pictureBox1.Location = new System.Drawing.Point(12, 12);
        this.pictureBox1.Name = "pictureBox1";
        this.pictureBox1.Size = new System.Drawing.Size(776, 426);
        this.pictureBox1.TabIndex = 0;
        this.pictureBox1.TabStop = false;
        // 
        // DrawingForm
        // 
        this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.ClientSize = new System.Drawing.Size(800, 450);
        this.Controls.Add(this.pictureBox1);
        this.Name = "DrawingForm";
        this.Text = "Рисование";
        this.Load += new System.EventHandler(this.DrawingForm_Load);
        ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
        this.ResumeLayout(false);
    }
    #endregion
    private System.Windows.Forms.PictureBox pictureBox1;
}

}

Answer 1

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

READ ALSO
сумма свойств объектов в массиве

сумма свойств объектов в массиве

Итак, имеем массив, элементами которого являются объекты

139
Експорт из mysql в excel через обработчик php

Експорт из mysql в excel через обработчик php

возникла у меня проблема при генерации excel файлаЗаключается она в том, что при попытке открыть файл в Excel вы получаете сообщение о том, что...

123