DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ダイレクトな?文字入力インタフェース

環境/言語:[C#.NET]
分類:[.NET]

TextBoxなどを使わないダイレクトな?文字入力インタフェースを
インプリメントしたいと考えています.
Word や PowerPoint における文字入力のような感じですね.

今まで,このようなプログラミングの経験がまったくなく,
どこから手をつけたらいいのかわからない状態です.

定石な方法や参考となるwebページなどを教えていただけると
幸いです.よろしくお願いいたします.
こんにちは、じゃんぬねっと です。

■No8332に返信(naokiさんの記事)
> TextBoxなどを使わないダイレクトな?文字入力インタフェースを
> インプリメントしたいと考えています.

えっと、貴方が言う「ダイレクトな文字入力インタフェース」は、
TextBox (Multiline) または RichTextBox が画面いっぱいに表示されたものですか?

> Word や PowerPoint における文字入力のような感じですね.

こういう感じでしょうか?
[↓]画像を御覧ください。



 /***************************************************
  * @Homepage    http://f57.aaa.livedoor.jp/~jeanne/
  * @Blog        http://www.ailight.jp/blog/jeanne/
  ***************************************************/
(この記事にはファイル"1105427370.gif"が添付されていましたが、削除されました。)
■No8334に返信(じゃんぬねっとさんの記事)

じゃんぬねっとさん,さっそくのリプライありがとうございました.

> こんにちは、じゃんぬねっと です。
>
> ■No8332に返信(naokiさんの記事)
>>TextBoxなどを使わないダイレクトな?文字入力インタフェースを
>>インプリメントしたいと考えています.
>
> えっと、貴方が言う「ダイレクトな文字入力インタフェース」は、
> TextBox (Multiline) または RichTextBox が画面いっぱいに表示されたものですか?

ちょっと違うかな...画像を添付しました.
うまく説明できなくてすみません.

今,PictureBox をベースにしたアプリを作っています.
そこに,文字入力も出来るようにしたいのです.
PhotoShopのようにダイアログ経由ではなく,
PowerPointのように直接入力できるようにしたい
というのが私の意図です.

現在,PictureBox 上に TextBox を貼り付けて,
・背景を透明にすることができる
・入力中ではないときはイベントもうけとらない
 (PictureBoxにスルーする)
ということができれば実現できるかな?
と四苦八苦しています.
(この記事にはファイル"example.GIF"が添付されていましたが、削除されました。)
■No8337に返信(naokiさんの記事)
> ちょっと違うかな...画像を添付しました.
> うまく説明できなくてすみません.

失礼しました m(_ _)m
Word や PowerPoint のようにというより、
 「Word や PowerPoint のシェイプのように」
だったのですね。

> 現在,PictureBox 上に TextBox を貼り付けて,
>  ・背景を透明にすることができる
>  ・入力中ではないときはイベントもうけとらない
>  (PictureBoxにスルーする)
> ということができれば実現できるかな?

とりあえず、そんな感じで良いのではないでしょうか?
問題は、入力を確定した後、PictureBox に 文字列を Draw しちゃうのか、
コントロールのままに貼り付けておくかでは、ないでしょうか?

# このアプリケーションをどう利用するかによるってことですね。

それによって、

> ・入力中ではないときはイベントもうけとらない
> (PictureBoxにスルーする)

これがどうあるべきか変わってきそうです...。



   /*******************************************
     * @Homepage  http://f57.aaa.livedoor.jp/~jeanne/
     * @Blog        http://www.ailight.jp/blog/jeanne/
     *******************************************/
■No8339に返信(じゃんぬねっとさんの記事)

> 失礼しました m(_ _)m

いえいえ

>>現在,PictureBox 上に TextBox を貼り付けて,
>> ・背景を透明にすることができる
>> ・入力中ではないときはイベントもうけとらない
>> (PictureBoxにスルーする)
>>ということができれば実現できるかな?
>
> とりあえず、そんな感じで良いのではないでしょうか?
> 問題は、入力を確定した後、PictureBox に 文字列を Draw しちゃうのか、
> コントロールのままに貼り付けておくかでは、ないでしょうか?

たしかにコントロールのまま貼り付けておくと,
いろいろ問題がありそうですね.
 #TextBox は透明に出来なかった...
 #イベント処理も面倒そう... などなど

TextBox が表示している「イメージ」と同じようにPictureBoxに
書くにはどうしたらいいんでしょうか?
 #TextBox のイメージを転送とかするんでしょうか???
> TextBox が表示している「イメージ」と同じようにPictureBoxに
> 書くにはどうしたらいいんでしょうか?

テキストボックスのような見た目を描画したい、という意味でしょうか。
その場合、
ControllPaint内のコントロール用の描画メソッドを使って枠等を描きつつ、
文字列はStringFormatを使ってテキストの描画範囲等を制御してからdrawString。
(制御してあげないと、文字列の長さ分延々描画されるので、長い場合にはみ出ても描画を続けるので。)

(ってそんなことを訊いているんじゃないのかな?)
■No8345に返信(こど。さんの記事)

おはようございます

> > TextBox が表示している「イメージ」と同じようにPictureBoxに
>>書くにはどうしたらいいんでしょうか?
>
> テキストボックスのような見た目を描画したい、という意味でしょうか。

そうです.

> その場合、
> ControllPaint内のコントロール用の描画メソッドを使って枠等を描きつつ、
> 文字列はStringFormatを使ってテキストの描画範囲等を制御してからdrawString。
> (制御してあげないと、文字列の長さ分延々描画されるので、長い場合にはみ出ても描画を続けるので。)

描画範囲だけの制御で大丈夫でしょうかね?
文字間とか行間とか TextBox と同じようにコントロールしなければ
ならないとなると,かなり大変だなぁ...と思っていました.
なので,TextBox のイメージを PictureBox へ転送,もしくは,
描画自体を PictureBox へ行うってのができないかな?
と思った次第です.アドバイスいただいた方法を試してみたいと
思います.

> (ってそんなことを訊いているんじゃないのかな?)

そんなことなんです(^^;;;
■No8352に返信(naokiさんの記事)

描画の部分に関しては,
TextBox の中身を転送しちゃうという方法で,
強引にとりあえず解決ということにしちゃいました.

Graphics mygraphics = textbox.CreateGraphics();
Graphics g = 描画する Graphics
IntPtr dc1 = src.GetHdc();
IntPtr dc2 = des.GetHdc();
BitBlt(dc2, x, y, w, h, dc1, sx, sy, 0x008800C6 /*0x00CC0020*/);
src.ReleaseHdc(dc1);
des.ReleaseHdc(dc2);

てな感じです.TextBox の中は背景が白,文字が黒と決めているので,
マスク処理などはまったくしていません.

いろいろお教えいただいた皆様,ありがとうございました.
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板