Bitmap bleibt weiß
-
Ich möchte eine Bitmap erstellen, die aus x 1615 Pixel großen Blöcken besteht.
Jeder Block besteht aus 16 115 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!