canvasについて


blue  2006-01-03 06:04:48  No: 19458

フォームに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つの操作で描画したものが反映されるのでしょうか?
宜しくお願いします

説明がうまく出来ず申し訳ないです


さどやま  URL  2006-01-03 07:49:39  No: 19459

> 次にもう一方のボタン2を押すと、先ほど描画したものが消えてしまいます
再現できません。

> 2度目に描画したものは残ります
1度目に描画したものも残ります。

最小限コードを示してください。
その場合、礼儀として "imgViewer" は "Image1" と、
"FColoe" は "clBlack" のように記述したほうがよろしいかと。


coo  2006-01-03 08:20:13  No: 19460

まとはずれな回答かもしれませんが、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;

これでうまく行きました。


どかん  2006-01-27 20:50:30  No: 19461

ていうか、Canvasって処理遅くないですか?
APIで描画するにはどうしたらいいのかわかんないっすけど・・・。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加