Bitmap bleibt weiß



  • Ich möchte eine Bitmap erstellen, die aus x 1615 Pixel großen Blöcken besteht.
    Jeder Block besteht aus 16 1
    15 Pixel großen schwarzen oder weißen Streifen.

    Dies ist der Codeausschnitt von dem Teil, der einen Block zeichnen soll.
    'Zeichen' ist ein char-Array bestehend aus '0' oder '1'.

    currnumber = StrToInt(ANumber.SubString(i,1));
          for(int j = 0; j < 16; j++)
          {
            TRect r;
            r.Left = (i*16+j,0);
            r.Right = (i*16+j+1,0);
            r.Top = 0;
            r.Bottom = 16;
            if(Zeichen[currnumber][j])
            {
              Barcode->Canvas->Brush->Color = clBlack;
            }
            else
            {
              Barcode->Canvas->Brush->Color = clWhite;
            }
            Barcode->Canvas->FillRect(r);
          }
    

    Als Ergebnis habe ich leider nur eine komplett weiße Grafik.
    Ich habe vorher noch nie mit TCanvas gearbeitet.
    Habe die Methode TCanvas::Rectangle auch versucht mit gleichem Ergebnis.
    Laut Borlandhilfe würde FillRect genau passen.
    Was mache ich falsch?

    Oder liegt das Problem vielleicht beim Anzeigen?

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      TBarcode bcd;
      TImage* Image = bcd.GetImage(Edit1->Text);
      Image1->Width = Image->Width;
      Image1->Height = Image->Height;
      Image1->Picture->Bitmap->Assign(Image->Picture->Bitmap);
      Image1->Refresh();
    }
    

    EDIT: Jetzt weiß ich wo der Fehler lag.
    Ich habe bei r.Left und r.Right 2 Werte angegeben aus irgendeinem Grund.
    Mit nur einem Parameter funktioniert es.



  • Kannst du mir bitte mal verraten, was diese Zeile deiner Meinung nach machen soll?

    r.Left = (i*16+j,0);
    

    Jedenfalls weist du hier r.Left den Wert 0 zu. r.Right dann dito.
    Geh doch einfach mal mit dem Debugger durch und schau was dein Programm wirklich macht.



  • In der Tat weiß ich nicht, was der Quatsch sollte.
    Es funktioniert ja jetzt.
    Vielen Dank!


Anmelden zum Antworten