画像の中に文字を表示するために
CanVas.TextOut(125,32,MakeSpace(90));
CanVas.Font.color:=Clwhite;
CanVas.TextOut(125,32,S);
CanVas.Font.color:=ClBlack;
としていました。
これだと、画像の一部が消えるので、何とかできまいかということで質問させていただきます。
よろしくお願いします。
delphiXE5を使用しています。
var
ARect: TRect;
S: String;
SetBkMode(Canvas.Handle, TRANSPARENT);
DrawText(Canvas.Handle, PChar(S), -1, ARect, DT_SINGLELINE or DT_CENTER or DT_VCENTER);
みたいな感じでDrawTextを使うのは、いかがですか?
igyさん、ありがとうございます。
今、ネットで調べていますが、なかなか難しいですね。
できる限りの勉強をしてから、また質問させていただきます。
画像に文字を表示することはできましたが、
この文字を消す方法はあるのですか?
文字だけ消すのは無理なよう気がします。
よろしくお願いします。
Arect:=rect(125,32,615,47); CanVas.Font.color:=ClWhite;
SetBkMode(Canvas.Handle, TRANSPARENT);
DrawText(Canvas.Handle, PChar(S), -1, ARect, DT_CENTER );
消すというよりも、
描画する情報
・背景画像の情報
・文字列1
・文字列2
・
・
をリストなどで保持しておき、OnPaintイベントで、それらを描画するようにして、
もし、文字列1を消したい場合、そのリストから文字列1を削除して、再描画する・・
のような感じでしょうか?
そうですね。
試してみます。
昔のBASICにあったと思うんですが、
画像を描くスクリーンと文字を書くスクリーンを両方同時に表示するというやりかたがいいと思うんですが、
delphiではありませんかね??
文字を書く直前に画像を描くprocedureを置いたら、最後は文字が書かれていません。
下の今まで使ってきた方法でも文字が消えます。
Onmousemoveでやっていたのですが、Onmousemoveの終わりは何ですかね??
まあ、いろいろ試してみますが、時間がかかります。
CanVas.TextOut(125,32,MakeSpace(90));
CanVas.Font.color:=Clwhite;
CanVas.TextOut(125,32,S);
CanVas.Font.color:=ClBlack;