Pfeil auf Image



  • Guten Abend,

    ich habe quasi den Auftrag, ein Programm zu schreiben, welches ein Bild öffnet, einen Pfeil hinzufügt und es speichert. Das öffnen und speichern klappt bereits ohne Probleme, allerdings habe ich keine Ahnung wie ich einen Pfeil erstellen soll. Man könnte den Anwender ja 2 Mal klicken lassen (Anfangs- und Endpunkt) um dann mit den Koordinaten und Drawline() eine Linie zeichnen. Allerdings fehlt dann soetwas wie eine Pfeilspitze. Vielleicht dann irgendwie ein Polygon dran oder so... ich suche nach guten Ansätzen um das ganze sauber umzusetzen.

    Außerdem glaube ich, dass sich das paint-event besser umsetzen lässt.

    Mein Code schaut bis jetzt so aus:

    //...
    OpenFileDialog ^openFileDialog1 = gcnew OpenFileDialog();
    
    openFileDialog1->InitialDirectory = ".";
    openFileDialog1->RestoreDirectory = false;
    openFileDialog1->Filter = "Bilder (*.jpg;*.tif;*.bmp)|*.jpg;*.tif;*.bmp";
    openFileDialog1->FilterIndex = 1;
    openFileDialog1->Multiselect = false;
    
    if (openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)
       { try
         {
    	bild = gcnew Bitmap(openFileDialog1->FileName);
    	this->ClientSize = System::Drawing::Size(bild->Width, bild->Height);
    	Refresh();
         }
         catch (Exception ^e)
         {
    	MessageBox::Show("Bild konnte nicht geladen werden.", "Fehler");
         }
       }
    }
    
    private: System::Void Form1_Paint(/*das übliche*/) 
    {
       if (bild != nullptr)
          e->Graphics->DrawImage(bild,0,0,this->ClientRectangle.Width,this-   
          >ClientRectangle.Height);
    }
    
    private: System::Void speichernToolStripMenuItem_Click(/*...*/) 
    {
    SaveFileDialog ^savedialog1 = gcnew SaveFileDialog();
    savedialog1->InitialDirectory = ".";
    savedialog1->RestoreDirectory = false;
    savedialog1->Filter = "Bilder (*.jpg)|*.jpg";
    savedialog1->FilterIndex = 1;
    savedialog1->ShowDialog();
    String^ savepos = savedialog1->FileName;
    	try {
    	  if ( bild != nullptr )
    	  {
    	    bild->Save(savepos, System::Drawing::Imaging::ImageFormat::Jpeg);
    	  }
    	    }
    	 catch ( Exception^ ) 
    	    { MessageBox::Show( "Fehler", "Eingaben prüfen." ); }
    

    Ich bedanke mich vielmals!


Anmelden zum Antworten