C ++ / CLI Почему этот код не рисует линию? - PullRequest
2 голосов
/ 18 марта 2012

У меня есть элемент управления Panel, и мне нужно нарисовать на нем несколько линий и круговПочему панель остается нетронутой?

Graphics ^ graphics = panel->CreateGraphics();
Pen^ penCurrent = gcnew Pen(Color::Red);
Point p1(10,10);
Point p2(20,20);
graphics->DrawLine(penCurrent,p1,p2);
//panel->Invalidate(); //tried this to refresh too

1 Ответ

1 голос
/ 18 марта 2012
Graphics ^ graphics = panel->CreateGraphics(); 
Pen^ penCurrent = gcnew Pen(Color::Red); 
Point p1(10,10); 
Point p2(20,20); 
graphics->DrawLine(penCurrent,p1,p2); 

delete graphics;

Следующий полный пример - работа и рисование линии

    #include "windows.h" 

    #using <mscorlib.dll> 
    #using <System.dll> 
    #using <System.Windows.Forms.dll> 
    #using <System.Drawing.dll> 

    using namespace System::Windows::Forms; 
    using namespace System;
    using namespace System::Drawing;


    ref class MyForm : public Form 
    { 

        public: 

        MyForm() 
        {  

             Text = "Hello, Windows Forms!"; 

             auto button = gcnew Button();  
             button->Text = "Click Me!"; 

             button->Click += gcnew EventHandler(this, &MyForm::button_click); 

             this->Controls->Add(button);  
        } 



        void button_click(Object^ sender, EventArgs^ e) 
        { 

            auto g = this->CreateGraphics();

            g->DrawLine(Pens::Black, Point(10, 10), Point(50, 50));

            delete g;
        } 

    }; 


    int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)  
    { 
      Application::Run(gcnew MyForm);  
    } 
...