マウスについてくる文字

解決


  2006-07-30 09:57:59  No: 22753

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

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

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

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


  2006-07-30 22:56:28  No: 22754

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

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

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

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


Fusa  2006-07-31 08:06:17  No: 22755

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

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

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


deldel  2006-07-31 18:00:06  No: 22756

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

    { 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 10:41:53  No: 22757

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

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

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

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

頑張ってみます!!

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


AY  2006-08-02 18:10:31  No: 22758

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


  2006-09-07 07:59:55  No: 22759

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

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

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


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

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






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