Strich soll auch nach oben laufen
-
Hallo
Habe hier einen Strich, der nach unten läuft. Mir fehlt im Moment die zündende Idee, wie ich auch gleichzeitig nach oben ausdehnen kann. Das einzige was ich aus meinen Versuchen herausgefunden habe ist, dass die Anweisung: YPos = YPos + 5;
in YPos = YPos - 5; umgewandelt werden kann.Hier mal der Code:
#pragma once namespace TestStrich2 { 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> /// Zusammenfassung für Form1 /// </summary> public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); // //TODO: Konstruktorcode hier hinzufügen. // } protected: /// <summary> /// Verwendete Ressourcen bereinigen. /// </summary> ~Form1() { if (components) { delete components; } } private: System::Windows::Forms::Button^ buttonBeenden; private: System::Windows::Forms::Button^ buttonStart; private: System::Windows::Forms::Panel^ panel1; private: System::Windows::Forms::TrackBar^ trackBar1; protected: private: /// <summary> /// Erforderliche Designervariable. /// </summary> System::ComponentModel::Container ^components; #pragma region Windows Form Designer generated code /// <summary> /// Erforderliche Methode für die Designerunterstützung. /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. /// </summary> void InitializeComponent(void) { this->buttonBeenden = (gcnew System::Windows::Forms::Button()); this->buttonStart = (gcnew System::Windows::Forms::Button()); this->panel1 = (gcnew System::Windows::Forms::Panel()); this->trackBar1 = (gcnew System::Windows::Forms::TrackBar()); (cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->trackBar1))->BeginInit(); this->SuspendLayout(); // // buttonBeenden // this->buttonBeenden->Location = System::Drawing::Point(478, 346); this->buttonBeenden->Name = L"buttonBeenden"; this->buttonBeenden->Size = System::Drawing::Size(75, 23); this->buttonBeenden->TabIndex = 0; this->buttonBeenden->Text = L"Beenden"; this->buttonBeenden->UseVisualStyleBackColor = true; this->buttonBeenden->Click += gcnew System::EventHandler(this, &Form1::buttonBeenden_Click); // // buttonStart // this->buttonStart->Location = System::Drawing::Point(369, 346); this->buttonStart->Name = L"buttonStart"; this->buttonStart->Size = System::Drawing::Size(75, 23); this->buttonStart->TabIndex = 1; this->buttonStart->Text = L"Start"; this->buttonStart->UseVisualStyleBackColor = true; this->buttonStart->Click += gcnew System::EventHandler(this, &Form1::buttonStart_Click); // // panel1 // this->panel1->BackColor = System::Drawing::Color::White; this->panel1->Location = System::Drawing::Point(12, 12); this->panel1->Name = L"panel1"; this->panel1->Size = System::Drawing::Size(300, 300); this->panel1->TabIndex = 2; this->panel1->Paint += gcnew System::Windows::Forms::PaintEventHandler(this, &Form1::panel1_Paint); // // trackBar1 // this->trackBar1->Location = System::Drawing::Point(340, 241); this->trackBar1->Maximum = 3; this->trackBar1->Minimum = 1; this->trackBar1->Name = L"trackBar1"; this->trackBar1->Size = System::Drawing::Size(232, 45); this->trackBar1->TabIndex = 3; this->trackBar1->Value = 2; // // Form1 // this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(584, 382); this->Controls->Add(this->trackBar1); this->Controls->Add(this->panel1); this->Controls->Add(this->buttonStart); this->Controls->Add(this->buttonBeenden); this->Name = L"Form1"; this->Text = L"Form1"; (cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->trackBar1))->EndInit(); this->ResumeLayout(false); this->PerformLayout(); } #pragma endregion private: System::Void buttonBeenden_Click(System::Object^ sender, System::EventArgs^ e) { Close(); } private: System::Void buttonStart_Click(System::Object^ sender, System::EventArgs^ e) { Int32 groesse, ausfuehren = 0; Graphics ^zeichenflaeche; zeichenflaeche = panel1 -> CreateGraphics(); Pen ^stift = gcnew Pen(Color::Black); Rectangle bereich; bereich = panel1 -> ClientRectangle; switch (trackBar1->Value) { case 1: groesse=125; break; case 2: groesse=100; break; case 3: groesse=75; break; } Int32 YPos = 150; Int32 XMax = panel1 -> ClientRectangle.Width; Int32 YMax = panel1 ->ClientRectangle.Height; for(Int32 i = 0; i < 20; i++) { while(YPos < YMax) { zeichenflaeche -> DrawLine(stift, panel1 -> ClientRectangle.Left + groesse, YPos, panel1 -> ClientRectangle.Width - groesse, YPos ); YPos = YPos + 5; groesse = groesse - 5; //// einen Moment warten //Threading::Thread::Sleep(100); //// den Zeichenbereich löschen //zeichenflaeche -> Clear(panel1 -> BackColor); } /*zeichenflaeche -> DrawLine(stift, panel1 -> ClientRectangle.Left + groesse, YPos, panel1 -> ClientRectangle.Width - groesse, YPos);*/ } } private: System::Void panel1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { Void buttonStart_Click(); } }; }
Bin Euch dankbar für jede Hilfe
champman
-
Hey
Habe es schon mal soweit geschafft, dass der Strich sich nach oben und unten ausdehnt. Jetzt muss er nur noch in der Mitte die Ausgangsgröße behalten und sich gleichmäßig ausdehnen.
Hier der Code nur für Button Start:
private: System::Void buttonStart_Click(System::Object^ sender, System::EventArgs^ e) { Int32 groesse, ausfuehren = 0; Graphics ^zeichenflaeche; zeichenflaeche = panel1 -> CreateGraphics(); Pen ^stift = gcnew Pen(Color::Black); Rectangle bereich; bereich = panel1 -> ClientRectangle; switch (trackBar1->Value) { case 1: groesse=125; break; case 2: groesse=100; break; case 3: groesse=75; break; } Int32 XMax = panel1 -> ClientRectangle.Width; Int32 YMax = panel1 ->ClientRectangle.Height; Int32 YPos = ClientRectangle.Height / 2; for(Int32 i = 0; i < 20; i++) { while(YPos < YMax) { zeichenflaeche -> DrawLine(stift, panel1 -> ClientRectangle.Left + groesse, YPos, panel1 -> ClientRectangle.Width - groesse, YPos ); YPos = YPos + 5; /*YPos = YPos - 5;*/ groesse = groesse - 5; //// einen Moment warten //Threading::Thread::Sleep(100); //// den Zeichenbereich löschen //zeichenflaeche -> Clear(panel1 -> BackColor); } } zeichenflaeche -> DrawLine(stift, panel1 -> ClientRectangle.Left + groesse, YPos, panel1 -> ClientRectangle.Width - groesse, YPos ); YPos = YPos - 5; for(Int32 i = 0; i < 20; i++) { while(YPos < YMax) { zeichenflaeche -> DrawLine(stift, panel1 -> ClientRectangle.Left + groesse, YPos, panel1 -> ClientRectangle.Width - groesse, YPos ); /*YPos = YPos + 5;*/ YPos = YPos - 5; groesse = groesse + 5; //// einen Moment warten //Threading::Thread::Sleep(100); //// den Zeichenbereich löschen //zeichenflaeche -> Clear(panel1 -> BackColor); } } zeichenflaeche -> DrawLine(stift, panel1 -> ClientRectangle.Left + groesse, YPos, panel1 -> ClientRectangle.Width - groesse, YPos ); /*YPos = YPos - 5;*/ }
Bin auf Eure Hilfestellung gespannt
champman
-
private: System::Void buttonStart_Click(System::Object^ sender, System::EventArgs^ e) { float groesse, ausfuehren = 0; Graphics ^zeichenflaeche; zeichenflaeche = panel1 -> CreateGraphics(); zeichenflaeche -> Clear(panel1 -> BackColor); Pen ^stift = gcnew Pen(Color::Black); Rectangle bereich; bereich = panel1 -> ClientRectangle; switch (trackBar1->Value) { case 1: groesse=0; break; case 2: groesse=50; break; case 3: groesse=100; break; } Int32 YPos = 0; int step=5; Int32 XMax = panel1 -> ClientRectangle.Width; Int32 YMax = panel1 ->ClientRectangle.Height; float change=(panel1 -> ClientRectangle.Width-groesse/2)/(YMax/step); float diff=0; while(YPos < YMax) { zeichenflaeche -> DrawLine(stift, panel1 -> ClientRectangle.Left-(int)diff, YPos, panel1 -> ClientRectangle.Width+(int)diff, YPos ); YPos = YPos + step; if(YPos<=YMax/2) { diff = diff - change; } else { diff = diff + change; } } }
So in etwa ?
-
Hey DarkShadow44
Genau so!!
Werde mir den Code mal genauer ansehen und wenn es Dich nicht stört noch ein paar Fragen stellen. Möchte das ganze erst mal für mich nach vollziehen.
Melde mich dann wieder
Recht lieben lieben Dank
champman