?
Hab das jetzt im Click Ereignis aufgerufen ... Es macht mir dennoch eine Picture Box daneben wieder hin ... Dann kommt nochmals der Farbdialog und dann zeichnet es die erste wieder neu !
Vollständiger Code:
#pragma endregion
private: System::Void btn_generate_Click(System::Object^ sender, System::EventArgs^ e) {
Random ^matrix = gcnew Random();
lbl_Zufallszahl->Text = "Zufallszahl: " + matrix->Next(Convert::ToInt32(textBox1->Text),
Convert::ToInt32(textBox2->Text));
}
private: System::Void textBox1_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e) {
char key;
key = e->KeyChar;
if((key < '0' || key > '9') && key != 8)
{
e->KeyChar = 0; //Bewirkt, dass das "fehlerhafte" Zeichen nicht
//in der Textbox angezeigt wird
}
}
private: System::Void textBox2_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e) {
char key1;
key1 = e->KeyChar;
if((key1 < '0' || key1 > '9') && key1 != 8)
{
e->KeyChar = 0; //Bewirkt, dass das "fehlerhafte" Zeichen nicht
//in der Textbox angezeigt wird
}
}
private: System::Void pictureBox1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) {
Graphics^ g = e->Graphics;
Random^ matrix1 = gcnew Random(); //Benutze Klasse Random, um Zufallszahlen zu erzeugen,
//für verschiedene Größen der Kreise und Rechtecke
int height,width,x,y,i,radius;
unsigned char r,gr,b;
r = matrix1->Next(0,255); //Variable für Rot anlegen
gr = matrix1->Next(0,255); //Variable für Grün anlegen
b = matrix1->Next(0,255); //Variable für Blau anlegen
Color^ col = gcnew Color(); //neue Farb - Variable Anlegen vom Typ (Klasse) Color
Pen^ pen1 = gcnew Pen(Color::FromArgb(255, r, gr, b)); //Pen 1 mit zufälligen Farben erzeugen
pen1->Width = matrix1->Next(3,5); //Zufällige Randstärke
Pen^ pen2 = gcnew Pen(Color::FromArgb(255, r, gr, b)); //Pen 2 mit zufälligen Farben erzeugen(später überschrieben)
pen2->Width = 3; //Randstärke auf 3Pt setzen
if(colorDialog1->ShowDialog() == ::System::Windows::Forms::DialogResult::OK) //Dialogbox anzeigen und
//abfragen, ob in der Dialog -
//Box "OK" gedrückt wurde
{
pen2->Color = colorDialog1->Color; //Schreiben der gewählten Farbe auf Pen2
}
for(i=0;i<5;i++)
{
height = matrix1->Next(30,60); // erzeugt Zufallszahl für Höhe zwischen 30 und 60
width = matrix1->Next(30,60);
x = matrix1->Next(0,pictureBox1->Width - width); //erzeugt Zufallszahl für x -Koordinate
//wobei beachtet wird, das nicht außerhalb der Picture
//Box gezeichnet wird
y = matrix1->Next(0,pictureBox1->Height - height);
g->DrawRectangle(pen1,x,y,width,height);
}
for(i=0;i<5;i++) //erzeuge 5 Rechtecke
{
height = matrix1->Next(30,60); // erzeugt Zufallszahl für Höhe zwischen 30 und 60
width = matrix1->Next(30,60);
x = matrix1->Next(0,pictureBox1->Width - width); //erzeugt Zufallszahl für x -Koordinate
//wobei beachtet wird, das nicht außerhalb der Picture
//Box gezeichnet wird
y = matrix1->Next(0,pictureBox1->Height - height);
g->DrawRectangle(pen2,x,y,width,height); // gefüllte Rechtecke erzeugen
}
for(i=0;i<5;i++) //die gleiche Prozedur für die Kreise
{
radius = matrix1->Next(20,50);
x = matrix1->Next(0,pictureBox1->Width - radius); // erzeugt Zufallszahl für x-Koordinate zwischen 30 und 60
y = matrix1->Next(0,pictureBox1->Height - radius); // erzeugt Zufallszahl für y-Koordinate zwischen 30 und 60
g->FillPie(Brushes::Orange,x,y,radius,radius,0,360); //Zeichne Kreis
}
lbl_Size->Text = "Breite: " + Convert::ToString(pictureBox1->Width) + "\n" +
"Höhe: " + Convert::ToString(pictureBox1->Height);
}
private:
PictureBox^ pictureBox1;
System::Void btn_load_Click(System::Object^ sender, System::EventArgs^ e) {
pictureBox1->Invalidate();
pictureBox1 = gcnew PictureBox;
// Dock the PictureBox to the form and set its background to white.
pictureBox1->Location = System::Drawing::Point(0, 0);
pictureBox1->Size = System::Drawing::Size(350, 410);
pictureBox1->Dock = DockStyle::Fill;
pictureBox1->BackColor = Color::White;
// Connect the Paint event of the PictureBox to the event handler method.
pictureBox1->Paint += gcnew System::Windows::Forms::PaintEventHandler( this, &Form1::pictureBox1_Paint );
// Add the PictureBox control to the Form.
this->Controls->Add( pictureBox1 );
}
};
}