フォームにTImageとTButton2個を配置しTImageに画像を読み込みます
ボタンを押すと下記のような処理を行います
これはボタン両方とも同じ処理を行います
(XとYの座標は予め指定してあり、ボタン1と2ではその値が違う)
with imgViewer.Picture.Bitmap.Canvas do
begin
Font.Color := FColor;
Font.Size := 40;
Font.Name := 'MS ゴシック';
TextOut(X-50, Y-30, 'AAA');
end;
この時、ボタンを押して、とある場所にAAAと描画しますが
次にもう一方のボタン2を押すと、先ほど描画したものが消えてしまいます
2度目に描画したものは残ります
どうすれば2つの操作で描画したものが反映されるのでしょうか?
宜しくお願いします
説明がうまく出来ず申し訳ないです
> 次にもう一方のボタン2を押すと、先ほど描画したものが消えてしまいます
再現できません。
> 2度目に描画したものは残ります
1度目に描画したものも残ります。
最小限コードを示してください。
その場合、礼儀として "imgViewer" は "Image1" と、
"FColoe" は "clBlack" のように記述したほうがよろしいかと。
まとはずれな回答かもしれませんが、TImageに文字を出力したいならTImageのCanvasにすればいいのでは?
procedure TForm1.Button1Click(Sender: TObject);
begin
with Image1.Canvas do
begin
Font.Color := clRed;
Font.Size := 30;
Font.Name := 'MS ゴシック';
TextOut(50, 30, 'AAA');
end;
end;
これでうまく行きました。
ていうか、Canvasって処理遅くないですか?
APIで描画するにはどうしたらいいのかわかんないっすけど・・・。
ツイート | ![]() |