FillRect Hintergrundfarbe?



  • Folgendes:

    Image1->Canvas->Brush->Style = bsCross;
    Image1->Canvas->Brush->Color=Red;
    Image1->Canvas-> FillRect(TRect(0,0,100,100));

    zeichnet mir ein rotes "Netz" auf den Canvas. Leider ist die Hintergrundfarbe immer schwarz, kann man die auch irgendwie beeinflussen?



  • Ich glaube es geht so nicht, weil du praktisch dein Rechteck mit einem Muster füllst. Du solltest zuerst dein Rechteck zeichnen:

    void TForm1::zeichnerechteck()
    {
     Image1->Canvas->Pen->Color=clBlack;
     Image1->Canvas->Brush->Color=clGreen;
     Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);
    }
    

    dann das Liniengitter:

    void TForm1::gridzeichnen()
    {
     int r=StrToInt(Edit1->Text);
     Image1->Canvas->Pen->Color=clLtGray;
    
     for (int t=r; t<Image1->Width; t=r+t)
     {
      Image1->Canvas->MoveTo(t,1);
      Image1->Canvas->LineTo(t,Image1->Height-1);
     }
    
     for (int d=r; d<Image1->Height; d=r+d)
     {
      Image1->Canvas->MoveTo(1,d);
      Image1->Canvas->LineTo(Image1->Width-1,d);
     }
    }
    

    Ich hatte für variable Linien den Abstand mit einem Edit-Feld und UpDown-Button verknüpft.

    void __fastcall TForm1::UpDown1Click(TObject *Sender, TUDBtnType Button)
    {
     Edit1->Text = UpDown1->Position;
     zeichnerechteck();
     gridzeichnen();
    }
    

    Vielleicht gibt es ja noch eine andere Variante?


Anmelden zum Antworten