2012-11-06 100 views
0

我需要在单击按钮时创建矩形。 我已经尝试了给定的代码,但它不工作。 我试图创建一个标志“mdraw”,当点击一个按钮时变成true。 form_paint中只有当“mdraw”变为true时才会创建矩形。但点击按钮后,什么都没有!在按钮上绘图单击 - Visual C++

我使用Windows窗体应用程序(CLR)。 微软的Visual C++ 2008

#pragma once 


    namespace try1 { 

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

/// <summary> 
/// Summary for Form1 
/// 
/// WARNING: If you change the name of this class, you will need to change the 
///   'Resource File Name' property for the managed resource compiler tool 
///   associated with all .resx files this class depends on. Otherwise, 
///   the designers will not be able to interact properly with localized 
///   resources associated with this form. 
/// </summary> 
public ref class Form1 : public System::Windows::Forms::Form 
{ 
public: 
    Form1(void) 
    { 
     InitializeComponent(); 
     // 
     //TODO: Add the constructor code here 
     // 
    } 

protected: 
    /// <summary> 
    /// Clean up any resources being used. 
    /// </summary> 
    ~Form1() 
    { 
     if (components) 
     { 
      delete components; 
     } 
    } 
private: System::Windows::Forms::Button^ button1; 
protected: 

private: 
    /// <summary> 
    /// Required designer variable. 
    /// </summary> 
    System::ComponentModel::Container ^components; 
private: System::Windows::Forms::Label^ label1; 
public: 
    bool mdraw; 
    #pragma region Windows Form Designer generated code 
    /// <summary> 
    /// Required method for Designer support - do not modify 
    /// the contents of this method with the code editor. 
    /// </summary> 
    void InitializeComponent(void) 
    { 
     this->button1 = (gcnew System::Windows::Forms::Button()); 
     this->label1 = (gcnew System::Windows::Forms::Label()); 
     this->SuspendLayout(); 
     // 
     // button1 
     // 
     this->button1->Location = System::Drawing::Point(98, 35); 
     this->button1->Name = L"button1"; 
     this->button1->Size = System::Drawing::Size(75, 23); 
     this->button1->TabIndex = 0; 
     this->button1->Text = L"button1"; 
     this->button1->UseVisualStyleBackColor = true; 
     this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click); 
     // 
     // label1 
     // 
     this->label1->AutoSize = true; 
     this->label1->Location = System::Drawing::Point(51, 77); 
     this->label1->Name = L"label1"; 
     this->label1->Size = System::Drawing::Size(0, 13); 
     this->label1->TabIndex = 1; 
     // 
     // Form1 
     // 
     this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); 
     this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; 
     this->ClientSize = System::Drawing::Size(284, 262); 
     this->Controls->Add(this->label1); 
     this->Controls->Add(this->button1); 
     this->Name = L"Form1"; 
     this->Text = L"Form1"; 
     this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load); 
     this->Paint += gcnew System::Windows::Forms::PaintEventHandler(this, &Form1::Form1_Paint); 
     this->ResumeLayout(false); 
     this->PerformLayout(); 

    } 
    #pragma endregion 
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)    { 
      mdraw=true; 
      label1->Text=button1->Text; 

     } 

private: System::Void Form1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { 
      Pen^ redPen = gcnew Pen(Color::Red); 
     int i,n; 
     i=20; 
     n=0; 

     if(mdraw) 
     { 
         while(n<=50) 
     { 
      e->Graphics->DrawRectangle(redPen,i,140,10,60); 
      i=i+20; 
      n+=1; 

     } 




     } 
    } 


    }; 
    } 

回答

0

使用如下 首先初始化mdraw

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) 
{ 
    if(!mdraw) 
    { 
     while(n<=50) 
     { 
     mdraw=true; 
     label1->Text=button1->Text; 
     e->Graphics->DrawRectangle(redPen,i,140,10,60); 
     i=i+20; 
     n+=1; 
     } 
    } 

} 
+0

button_click方法图形事件使mdraw真实,然后我想绘制矩形 –

+0

调用那个onclick函数中的代码 while(n <= 50) e-> Graphics-> DrawRectangle(redPen,i,140,10,60); i = i + 20; n + = 1; } – Akhil

+0

给出使用e –

0

按钮E事件没有,这就是为什么显示错误