マウスについてくる文字

解決


 2006-07-30 00:57:59  No: 22753  IP: 192.*.*.*

現在、プリクラのように、画像に文字を貼り付けるものを作っています。

マウスアップイベントで、TImage.Picture.Bitmap.Canvas.TextOutを使用し、表示画像にテキストを出力しています。
と、ここまでは出来たのですが、、、

マウスカーソルにくっついて文字を移動させる方法がわかりません。
カーソルを、その文字列に変更させるイメージなんですが・・・。

教えてください。
よろしくお願いしますっ!!

編集 削除
 2006-07-30 13:56:28  No: 22754  IP: 192.*.*.*

すいません。
カーソルを変更するのではなく、カーソルのところに貼り付けたい文字がある感じです。
それで、クリックしたら、その場所に、その文字を貼り付けたいんです。

上記方法では、カーソルがある所に文字を描画することは出来るのですが、細かい位置調整とかが出来ないので、今回の方法を実現させたいと思いました。

よくあるスタンプ機能的な感じなんですが。。。

分かり辛いでしょうか・・・?(;^_^A

編集 削除
Fusa  2006-07-30 23:06:17  No: 22755  IP: 192.*.*.*

なんらかのWindowに文字を描画して
リージョンで文字だけ切り抜いて
マウスに追随させたり。

するとよいのではないでしょうか。

私は実装したことないのでなんとも答えにくいのですが。

編集 削除
deldel  2006-07-31 09:00:06  No: 22756  IP: 192.*.*.*

例えばラベルのドラッグなどは以下のようにしてできますが、
参考にはならないでしょうか?


    { Private 宣言 }
    g_boDuringDown: Boolean;
    g_iX, g_iY: integer;


procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  g_boDuringDown := True;
  g_iX := X;
  g_iY := Y;
end;

procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if g_boDuringDown then begin
    Label1.Left := Label1.Left + (X - g_iX);
    Label1.Top  := Label1.Top  + (Y - g_iY);
  end;
end;

procedure TForm1.Label1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  g_boDuringDown := False;
end;

編集 削除
 2006-08-01 01:41:53  No: 22757  IP: 192.*.*.*

Fusaさん回答ありがとうございます。
文字だけ別Windowですか、、、考えてませんでした^^;
ちょっとやってみたいと思います!!

deldelさん回答ありがとうございます。
ラベルのドラッグですかっ。
ドラッグではなくて、コンポーネント内に入ったら・・・って感じにすればいけそうな気もしますね。。。

お二方、ありがとうございます。

いやぁ、もうすこし簡単に出来ると思ったんですけどね。。。^^;

頑張ってみます!!

他の方法、ヒントも募集してます。
お願いします☆★

編集 削除
AY  2006-08-02 09:10:31  No: 22758  IP: 192.*.*.*

スタンプとは異なりますが、私がとっている方法は、
あるボタンで、文字入力モードに設定し、
文字入力モードであれば、イメージ上のクリックでその位置にテキストボックスを表示・入力させています。
入力中でも、別な位置をクリックすれば  テキストボックスはその位置に移動します(調整可能になるの意)もちろん、テキストボックスの内容は
そのままです。
実際の貼り付けは、テキストボックスでEnterキーで、その位置に
TextOutしています。
テキストボックスのフォントを指定しているFontに合わせれば
サイズ・位置関係も正しくわかりますし。
クリックで、貼り付けとはタイミングが違うので  どうかとは思いますが
ひとつの方法として。

編集 削除
 2006-09-06 22:59:55  No: 22759  IP: 192.*.*.*

返事が遅くなり申し訳ありません(ネット環境で問題が^^;)。

皆様、いろいろと参考になる回答、ありがとうございます。
deldelさんの方法をアレンジして実現することにしました。

本当にありがとうございましたm(_ _)m

編集 削除