- - PR -
リッチテキストボックスについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-08-04 14:08
こんにちわ
リッチテキストボックスに書いた文書を、 ピクチャーボックスに表示させたいのでが、 何かよい方法はないでしょうか? (一文字ずつFontやColorの情報を取ってやってみたのですが、 これだとやはり膨大な量になり、また、GraphicsのMeasureString で文字の表示座標を測っていくとずれてしまって、うまくいきません。) よろしくお願いいたします。 | ||||
|
投稿日時: 2004-08-04 14:42
何かのトリガー(ボタンクリックなど)に応じて表示するのであれば、
RichTextBoxの描画内容をImageとして保持するようにしてはいかがでしょう? 描画内容を取り出す一例として、RichTextBoxを派生させ、OnPaint()を以下のようにオーバーライドします
あとは、取り出した描画内容(offImage)をPictureBoxに渡してやれば、できそうな気がする。 | ||||
|
投稿日時: 2004-08-04 15:59
ご返答ありがとうございます。
VB.NETで同じようなコードを書いてやってみたのですが、 残念ながらうまくできませんでした。 | ||||
|
投稿日時: 2004-08-04 16:49
こんにちは。
RichTextBox の内容を印刷する方法というのが こちらに記述されています。 今回行いたいことの解ではありませんが、何らかのヒントになれば。。。 | ||||
|
投稿日時: 2004-08-05 08:52
どのようなコードを記述して、どのようなエラー、不具合が発生したのかを詳細に記述してくれないと、更なる回答を与えることができません。 | ||||
|
投稿日時: 2004-08-05 09:44
おはようございます
Protected Overrides Sub OnPaint(ByVal pe As System.Windows.Forms.PaintEventArgs) MyBase.OnPaint(pe) ' カスタム描画コードをここに追加します。 Dim oggGraphics As Graphics oggGraphics = Graphics.FromImage(m_image) MyBase.OnPaint(New PaintEventArgs(oggGraphics, pe.ClipRectangle)) pe.Graphics.DrawImage(m_image, 0, 0) End Sub このようなコードを書いてみたのですが、 m_imageを他の他に渡して、Graphics.DrawImageメソッド等を使うと、 m_imageがNothingだというエラーメッセージになってしまいます。 VBでも印刷の方法が載っていたのでやってみました。 印刷はできたのですが(当たり前ですね)、 拡大とか縮小とかをしないといけないことを考えると、 GraphicsPathかGraphicsで使える形にしたいんです。 この印刷の方法がヒントになるのかもしれませんが、 私のクルクルパーの頭では、どうもそこまでは至らなくて・・・ | ||||
|
投稿日時: 2004-08-05 12:37
PictureBoxで表示したいんですよね?
取り出した描画内容(m_image)をPictureBox#Imageプロパティを介して渡してやれば(もしかしたら、Invalidate()を呼んでやらないといけないかもしれない)、表示されると思うんですけどねぇ。たぶんDrawImage()を呼ぶ必要も無いと思う。 どのようにして、ほかのコントロールに渡しているのか、および例外のスタックトレースも可能な限り、提示してください。 #蛇足 #最初のMyBase.OnPaint(pe) は不要です。 | ||||
|
投稿日時: 2004-08-05 13:09
こんにちわ
そうです。PictureBoxです。 リッチテキストをグラフィックとして表示させたいのです。 DrawStringとかだとフォントや色の指定をしないといけないので、リッチテキストの場合かなり大変になりますし、文字の表示位置も変わってきてしまうので、困っています。 渡し方はm_imageをパブリックなプロパティにして、表示させたいPictureBoxでDrawImageしようとしています。 エラーは、 'System.ArgumentNullException' のハンドルされていない例外が system.drawing.dll で発生しました。 追加情報 : 値を Null にすることはできません。 とでるのですが、 どうもリッチテキストボックスでは、InvalidateなどをしてもOnPaintは走らないみたいです。代わりにOnInvalidatedが文字を入力したりするたびに走っているみたいです。 |