Programmgesteuert zeichnen



  • Linnea schrieb:

    du solltest die Bedingung deiner For-Schleife mal überprüfen ( > != <) 😉

    zum Thema Kreis: siehe BCB-Hilfe zu Ellipse

    ja das mit dem "<" hab ich auch grad bemerkt xD
    trotzdem schauts noch voll komisch aus.. stimmt i-wie nicht...
    edit: ok habs geschafft lol thx

    ->
    Ich hab leider keine BCB-Hilfe mehr ..! kommt immer ne fehlermeldung.
    aber werd mir bald ne neuere version holen + hilfe!
    Kannst du die hilfe da reinkopieren, oder mir halt sagen wies geht? ^^
    thx



  • BCB_Hilfe schrieb:

    TCanvas::Ellipse
    Die Methode Ellipse zeichnet auf der Zeichenfläche eine Ellipse, die durch ein umgebendes Rechteck definiert ist.

    void __fastcall Ellipse(int X1, int Y1, int X2, int Y2);
    void __fastcall Ellipse(TRect Rect);

    Beschreibung

    Mit Ellipse können Sie auf der Zeichenfläche einen Kreis oder eine Ellipse zeichnen. Legen Sie das umgebende Recheck folgendermaßen fest:

    Durch die linke obere Ecke mit den Pixel-Koordinaten (X1, Y1) und durch die rechte untere Ecke mit den Koordinaten (X2, Y2) oder
    Übergeben Sie einen Wert für TRect.

    Wenn die Ecken des Recktecks ein Quadrat bilden, wird ein Kreis gezeichnet.

    Die Ellipse wird mit dem aktuellen Stift gezeichnet und mit dem aktuellen Pinsel gefüllt.

    Hinweis

    Unter Windows 95 dürfen die Summen X1 + X2 und Y1 + Y2 den Wert 32768 nicht überschreiten. Das gleiche gilt für die Summe X1 + X2 + Y1 + Y2.

    BCB-Hilfe schrieb:

    Canvas, Ellipse, Color, Style (Beispiel)
    Im folgenden Beispiel wird auf ein TImage-Objekt namens Image1 eine Ellipse mit Kreuzschraffur gezeichnet, wenn der Benutzer auf die Schaltfläche Button1 klickt.

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    TCanvas *pCanvas = Image1->Canvas;
    pCanvas->Brush->Color = clRed;
    pCanvas->Brush->Style = bsDiagCross;
    pCanvas->Ellipse(0, 0, Image1->Width, Image1->Height);
    }



  • und Dein 1.Problem (bei Image W=500, H=300) geht dann so, falls ich Dich richtig verstanden habe.

    int x;
         Image1->Canvas->Pen->Width=5;
         for (x=1;x<500;x=x+10)
         {
         Image1->Canvas->MoveTo(250,300);
         Image1->Canvas->LineTo(x,0);
         }
    

    Gruß myerscola



  • danke vielmals!

    würde gern noch den kreis füllen, wie geht das?

    Image1->Canvas->Ellipse(150,100,350,300);
    Image1->Canvas->FloodFill(150,100,clRed,clRed);
    

    Funzt aber nicht!!?



  • Hi,

    Linnea schrieb:

    BCB-Hilfe schrieb:

    Canvas, Ellipse, Color, Style (Beispiel)
    Im folgenden Beispiel wird auf ein TImage-Objekt namens Image1 eine Ellipse mit Kreuzschraffur gezeichnet, wenn der Benutzer auf die Schaltfläche Button1 klickt.

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    TCanvas *pCanvas = Image1->Canvas;
    pCanvas->Brush->Color = clRed;
    pCanvas->Brush->Style = bsDiagCross;
    pCanvas->Ellipse(0, 0, Image1->Width, Image1->Height);
    }

    mfg, Micha



  • ok danke...

    Und wie fülle ich bestimmte Rechtecksflächen von z.B. einem Würfel?
    So fülle ich nämlich nur den Quader und die anderen Seitenflächen bleiben weiß:

    {
     Image1->Canvas->Brush->Color=clRed;
     Image1->Canvas->Rectangle(100,100,200,200);
    
     Image1->Canvas->MoveTo(100,100);
     Image1->Canvas->LineTo(130,70);
     Image1->Canvas->MoveTo(200,100);
     Image1->Canvas->LineTo(230,70);
     Image1->Canvas->MoveTo(230,70);
     Image1->Canvas->LineTo(130,70);
     Image1->Canvas->MoveTo(200,200);
     Image1->Canvas->LineTo(230,170);
     Image1->Canvas->MoveTo(230,170);
     Image1->Canvas->LineTo(230,70);
    
    }
    


  • ok dazu noch ne Frage:
    Wie kann ich in einem Kreis mehrere Kreise reinmachen?
    Also in der Mitte soll ein kleiner Kreis sein, dann soll noch ein Kreis drumherum sein, und dann noch einer und noch einer usw.
    Wie geht das? Also ich soll nicht jeden Kreis einzeln machen, sondern das alles mit ner Schleife lösen!

    Bitte helfen! mfg



  • Wo ist das Problem? In der Schleife einfach immer wieder Ellipse aufrufen, mit jeweils angepassten Koordinaten. Du musst nur daran denken, dass Bestehendes übermalt wird, also mit dem grössten Kreis anfangen.

    Und sieh zu, dass du die Hilfe installierst, langsam reicht es mit der Eierei.



  • ich verstehs einfach nicht
    habs mal so..

    int x;
           for (x=1;x<500;x=x-10)
         {
       Image1->Canvas->Ellipse(150,100,350,300);
       Image1->Canvas->Ellipse(x,x,x,x);
         }
    

    funzt natürlich nicht 😞
    bitte richtig machen. Bitte!!



  • Geh die Schleife mit dem Debugger durch und sieh dir an, was mit x passiert. Und dann denk nochmal über Startwert und Abbruchbedingung deiner for-Schleife nach.

    Offenbar fehlt dir das Verständnis für die grundlegendsten Prinzipien der Programmierung, ggf. solltest du erst nochmal ein Einsteigerbuch oder -tutorial durcharbeiten.

    Edit:
    'for-Schleife' statt 'if-Abfrage' 🙂



  • ja ich werd mich damit eh nicht mehr lang beschäftigen

    und ich komm nicht drauf, kann mir keiner sagen wie der code aussehen soll? bitte



  • LoSt schrieb:

    ja ich werd mich damit eh nicht mehr lang beschäftigen

    Klasse Einstellung. So kommt man natürlich immer ans Ziel.

    Um auf Jansen zurück zu kommen: fehlende Grundlagen!


Anmelden zum Antworten