驚いたことに、TCanvas でテキストを繰り返しレンダリングすることは何らかの形で「加算的」であることがわかりました。設定が問題の原因であることは理解していますが、テキストを透過的かつ繰り返し (つまり、イベントで)Canvas.Brush.Style:=bsClear
レンダリングする必要があります。OnPaint
これを行った後、テキストは見栄えがよくありません。
どうすればそれを回避できますか?
サンプル コードを次に示します。という名前の TButton を数回クリックすると、その効果を確認できますbtn1
。
procedure TForm1.btn1Click(Sender: TObject);
begin
Form1.Canvas.Brush.Style:=bsClear; //if you omit this, everything is OK.
Form1.Canvas.Font.Color:=clRed;
Form1.Canvas.Font.Name:='Times new Roman';
Form1.Canvas.Font.Style:=[fsBold];
Form1.Canvas.Font.Size:=12;
Form1.Canvas.TextOut(50,50,'www.stackoverflow.com');
end;