Не могли бы вы предложить простую программу для рисования? - PullRequest
1 голос
/ 02 октября 2011

Я новичок в C ++.Я пытаюсь нарисовать многоугольник.Мой код может быть построен, но ничего не отображается в форме, когда я его запускаю.Может ли кто-нибудь, пожалуйста, помогите мне.Спасибо (большая часть приведенного ниже была из шаблона VS по умолчанию, я добавил только несколько строк)

namespace DrawMyShape {

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;

public ref class Form1 : public System::Windows::Forms::Form
{
public:
    Form1(void)
    {
        InitializeComponent();
    }

protected:
    /// <summary>
    /// Clean up any resources being used.
    /// </summary>
    ~Form1()
    {
        if (components)
        {
            delete components;
        }
    }

private:

    System::ComponentModel::Container ^components;

    void InitializeComponent(void)
    {
        this->components = gcnew System::ComponentModel::Container();
        this->Size = System::Drawing::Size(800,800);
        this->Text = L"Form1";
        this->Padding = System::Windows::Forms::Padding(0);
        this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    }

    private: System::Void Form1_Paint(System::Object^  sender, System::Windows::Forms::PaintEventArgs^  e)
    {

        Graphics ^g = e->Graphics;  //require for drawing
        SolidBrush^ blackPen = gcnew SolidBrush( Color::Blue );

        // Create points that define polygon.
        Point point1 = Point(50,50);
        Point point2 = Point(100,25);
        Point point3 = Point(200,5);
        Point point4 = Point(250,50);
        Point point5 = Point(300,100);
        Point point6 = Point(350,200);
        Point point7 = Point(250,250);
        array<Point>^ curvePoints = {point1,point2,point3,point4,point5,point6,point7};

        // Draw polygon to screen.
        e->Graphics->FillPolygon( blackPen, curvePoints );

    }
};
}

1 Ответ

0 голосов
/ 02 октября 2011

Вы забыли подписаться на событие Paint:

        this->Paint += gcnew System::Windows::Forms::PaintEventHandler(this, &Form1::Form1_Paint);

Щелкните значок молнии в окне «Свойства» и дважды щелкните «Краска». Правильный способ сделать это - переопределить метод OnPaint ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...