C Einlesen einer .txt Datei..

Versuchs damit :
Code:
int Center[2];
Center[0] = (A[0]+B[0]+C[0])/3;
Center[1] = (A[1]+B[1]+C[1])/3;

PaintBox1->Canvas->Pen->Width = 1;
PaintBox1->Canvas->Pen->Color = clBlack;
PaintBox1->Canvas->Brush->Color = clGreen;

PaintBox1->Canvas->MoveTo(A[0],A[1]);
PaintBox1->Canvas->LineTo(B[0],B[1]);
PaintBox1->Canvas->LineTo(C[0],C[1]);
PaintBox1->Canvas->LineTo(A[0],A[1]);

PaintBox1->Canvas->FloodFill(Center[0], Center[1], clBlack, fsBorder);
 
Vielen Dank!!!! Würde klappen aber mich würde interessieren wie du das mit dem center gemacht hast und wie die idee wäre lg.
 
Zuletzt bearbeitet:
Vielleicht solltest du mal die Seite aktuallisieren bevor zu schreibst.
In Beitrag #21 hat Kruzifix schon die Copy&Paste Lösung geschrieben.

Die letzte Zeile sollte vielleicht besser so aussehen:
Code:
PaintBox1->Canvas->FloodFill(Center[0], Center[1], PaintBox1->Canvas->Pen->Color, fsBorder);
 
Der Funktion reicht es, wenn sie einen Punkt innerhalb des Dreiecks bekommt. Da die Eckpunkte aber nicht fest sind, macht es Sinn einen Punkt innerhalb des Dreiecks zu berechnen.

Dazu habe ich den Geometrischen Schwerpunkt (Siehe hier) genommen.

abf6fbb6d1d955643a1c0f5fbddb694e.png

Die Berechnung steht so 1:1 im Code.
 
Zuletzt bearbeitet:
Vielen Dank an alle die geholfen habe und vorallem an Kruzuifix echt eine hilfreiche und nette Community :)
Hier wär der Endcode wenn es wen intressiert
Code:
TForm1 *Form1;
int A[2];
int B[2];
int C[2];
TColor color = clBtnFace;
TStringList *liste;
TOpenDialog *OpenDialog1;
int dreieck;
int zaehler = 0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PaintBox1Paint(TObject *Sender)
{
     liste = new TStringList();
     liste->LoadFromFile("dreieck.txt");

     A[0]= StrToInt(liste->Strings[0]);
     A[1]= StrToInt(liste->Strings[1]);

     B[0]= StrToInt(liste->Strings[2]);
     B[1]= StrToInt(liste->Strings[3]);

     C[0]= StrToInt(liste->Strings[4]);
     C[1]= StrToInt(liste->Strings[5]);

     PaintBox1->Canvas->Brush->Color = clGreen;
     PaintBox1->Canvas->MoveTo(A[0],A[1]);
     PaintBox1->Canvas->LineTo(B[0],B[1]);
     PaintBox1->Canvas->LineTo(C[0],C[1]);
     PaintBox1->Canvas->LineTo(A[0],A[1]);

     int Center[2];
     Center[0] = (A[0]+B[0]+C[0])/3;
     Center[1] = (A[1]+B[1]+C[1])/3;

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
      Label1->Caption="";
      int Center[2];
      Center[0] = (A[0]+B[0]+C[0])/3;
      Center[1] = (A[1]+B[1]+C[1])/3;
      if((zaehler % 3) == 0)
      {
           PaintBox1->Canvas->Pen->Width = 1;
           PaintBox1->Canvas->Pen->Color = clBlack;
           PaintBox1->Canvas->Brush->Color = clGreen;
           PaintBox1->Canvas->FloodFill(Center[0], Center[1], clBlack, fsBorder);
           Label1->Font->Color = clGreen;
           Label1->Caption = "Grün";
      }
      else if((zaehler % 3) == 1)
      {
           PaintBox1->Canvas->Pen->Width = 1;
           PaintBox1->Canvas->Pen->Color = clBlack;
           PaintBox1->Canvas->Brush->Color = clBlue;
           PaintBox1->Canvas->FloodFill(Center[0], Center[1], clBlack, fsBorder);
           Label1->Font->Color = clBlue;
           Label1->Caption = "Blau";
      }
      else //zahler % 3 == 2
      {
           PaintBox1->Canvas->Pen->Width = 1;
           PaintBox1->Canvas->Pen->Color = clBlack;
           PaintBox1->Canvas->Brush->Color = clRed;
           PaintBox1->Canvas->FloodFill(Center[0], Center[1], clBlack, fsBorder);
           Label1->Font->Color = clRed;
           Label1->Caption = "Rot";
      }
      zaehler++;
}
 
Nimm mal lieber die Zeile 30 raus. :)

Und zum Füllen die Zeile die ich in Beitrag #23 gepostet habe, sonst funktioniert es nicht mehr wenn du die Farbe änderst.
 
Zurück
Oben