C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: リッチテキストの文字列をピクチャボックスに表示したい


(過去ログ 49 を表示中)

[トピック内 12 記事 (1 - 12 表示)]  << 0 >>

■26734 / inTopicNo.1)  リッチテキストの文字列をピクチャボックスに表示したい
  
□投稿者/ Kaneda (1回)-(2008/10/20(Mon) 10:59:15)

分類:[.NET 全般] 

リッチテキストボックスに入力した文字列をピクチャボックスに書き出したいのですが、
どのようにすればよろしいでしょうか。
リッチテキストでは、文字ごとに色やフォントを変更しているのですが、
1文字ごとにフォントの設定を判断しながらやろうと試みたのですが、表示位置の判定など
うまくできませんでした。

何かよい方法はないでしょうか



VB2005+Win XP SP2
引用返信 編集キー/
■26738 / inTopicNo.2)  Re[1]: リッチテキストの文字列をピクチャボックスに表示したい
□投稿者/ のん (17回)-(2008/10/20(Mon) 12:20:00)
のん さんの Web サイト
おせわになります☆
文字列をPictureboxに書き出したいというのはPictureboxコントロールに
Labelコントロールを配置して表示するって言うことでいいのでは?
それじゃだめなのですか?
できればもう少し詳しく書いていただけませんか?

No26734 (Kaneda さん) に返信
> リッチテキストボックスに入力した文字列をピクチャボックスに書き出したいのですが、
> どのようにすればよろしいでしょうか。
> リッチテキストでは、文字ごとに色やフォントを変更しているのですが、
> 1文字ごとにフォントの設定を判断しながらやろうと試みたのですが、表示位置の判定など
> うまくできませんでした。
>
> 何かよい方法はないでしょうか
>
>
>
> VB2005+Win XP SP2
引用返信 編集キー/
■26743 / inTopicNo.3)  Re[2]: リッチテキストの文字列をピクチャボックスに表示したい
□投稿者/ Kaneda (2回)-(2008/10/20(Mon) 13:12:29)
No26738 (のん さん) に返信
> おせわになります☆
> 文字列をPictureboxに書き出したいというのはPictureboxコントロールに
> Labelコントロールを配置して表示するって言うことでいいのでは?
> それじゃだめなのですか?
> できればもう少し詳しく書いていただけませんか?

お世話になります。
PictureboxコントロールにLabelコントロールを配置するという意味がわからないのですが、
やりたいことは、リッチテキストで編集した文字列(たとえば1文字目がMS明朝10pt赤色で、
2文字目がMSゴシック12ptで青色・・・と続く)をピクチャボックス上に表示したいのです。

ちなみにLabelコントロールで文字ごとにフォントや色を変えることはできましたっけ?


引用返信 編集キー/
■26746 / inTopicNo.4)  Re[1]: リッチテキストの文字列をピクチャボックスに表示したい
□投稿者/ みきぬ (153回)-(2008/10/20(Mon) 13:18:55)
RichTextBox では背景画像が指定できないから、かわりに PictureBox を使おうと思ったのかしら?

であれば、リッチテキストを HTML に直して(フォントの指定をHTMLタグで置き換えて表現する)
それを WebBrowser コントロールで表示してみるってのはどうでせう。

# ...と思ったけどかなり面倒そうだ
引用返信 編集キー/
■26747 / inTopicNo.5)  Re[2]: リッチテキストの文字列をピクチャボックスに表示したい
□投稿者/ Tram (7回)-(2008/10/20(Mon) 14:21:56)
目的に適うか判りませんが、
Win32 API使って RichTextBox コントロールを丸ごとキャプチャして、
PictureBox にセットするのはどうでしょう。
http://dobon.net/vb/dotnet/graphics/invokepaint.html
Win32 API よりも Control.DrawToBitmapを使う方が簡単ですが、
RichTextBox には対応していないようです。
引用返信 編集キー/
■26748 / inTopicNo.6)  Re[3]: リッチテキストの文字列をピクチャボックスに表示したい
□投稿者/ のん (18回)-(2008/10/20(Mon) 14:33:48)
のん さんの Web サイト
> PictureboxコントロールにLabelコントロールを配置するという意味がわからないのですが、
文字列ってかいてあったんで、labelコントロールで、backcolorをColor.Transparentにして透明にすれば・・・・とかおもったんです。
> ちなみにLabelコントロールで文字ごとにフォントや色を変えることはできましたっけ?
やろうとしたことがないので、わからなかったんですが、調べると
http://bbs.wankuma.com/index.cgi?mode=al2&namber=6785&KLOG=17
自分でコンポーネント探すしかないようですね。
> やりたいことは、リッチテキストで編集した文字列(たとえば1文字目がMS明朝10pt赤色で、
> 2文字目がMSゴシック12ptで青色・・・と続く)をピクチャボックス上に表示したいのです。
私が想像してたのと違うようです、Kanedaさんはこうしたいってことですよね?
http://dobon.net/vb/bbs/log3-34/20876.html
引用返信 編集キー/
■26751 / inTopicNo.7)  Re[4]: リッチテキストの文字列をピクチャボックスに表示したい
□投稿者/ Kaneda (3回)-(2008/10/20(Mon) 15:11:41)
Tram さん、のん さん

> 目的に適うか判りませんが、
> Win32 API使って RichTextBox コントロールを丸ごとキャプチャして、
> PictureBox にセットするのはどうでしょう。
> http://dobon.net/vb/dotnet/graphics/invokepaint.html

> 私が想像してたのと違うようです、Kanedaさんはこうしたいってことですよね?
> http://dobon.net/vb/bbs/log3-34/20876.html

お二方の教えていただいたURLで、コントロールのキャプチャはできました。
リッチテキストに表示される文字がどれくらいになるかわからないため、
リッチテキストのサイズも含めキャプチャするでは、表示されている文字しか
ピクチャボックスに反映できませんでした。。。

やりたいことでいえば、みきぬ さんの考えに近いのでしょうか。
リッチテキストのフォント設定を読みながら、ピクチャボックスに
描画していくような感じのことがしたいのです。
(背景画像を設定したいというわけではないんですが・・・)

引用返信 編集キー/
■26775 / inTopicNo.8)  Re[1]: リッチテキストの文字列をピクチャボックスに表示したい
□投稿者/ 魔界の仮面弁士 (877回)-(2008/10/20(Mon) 19:52:08)
2008/10/20(Mon) 20:05:13 編集(投稿者)

No26734 (Kaneda さん) に返信
> リッチテキストボックスに入力した文字列をピクチャボックスに書き出したいのですが、
> どのようにすればよろしいでしょうか。

こうかな。

Private bmp As Bitmap
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
 If bmp IsNot Nothing Then
  bmp = New Bitmap(1000, 2000)
  Using g As Graphics = Graphics.FromImage(bmp)
   Dim r As Rectangle = New Rectangle(Point.Empty, bmp.Size)
   ' Print メソッドの実装方法は、下記を参照してください。
   ' http://support.microsoft.com/kb/811401/
   RichTextBox1.Print(0, RichTextBox1.TextLength, _
    New PrintPageEventArgs(g, r, r, New PageSettings()))
 End Using
 PictureBox1.Image = bmp
End Sub
引用返信 編集キー/
■26788 / inTopicNo.9)  Re[2]: リッチテキストの文字列をピクチャボックスに表示したい
□投稿者/ Kaneda (4回)-(2008/10/21(Tue) 10:54:19)
No26775 (魔界の仮面弁士 さん) に返信

なるほど、印刷とは思いつきませんでした。

この方法だと、印刷されるテキストの背景色がリッチテキストの背景色となります。
ビットマップの背景色を透過したら、アンチエイリアスのせいか、きれいに切り抜くことができませんでした。
今回はピクチャボックスの背景色をリッチテキストに合わせたのですが。

また、宣言するビットマップのサイズを出力内容の最大にすることはできないんでしょうか。
常にサイズを固定というのがキモチ悪くて。
でもリッチテキストのsizeに合わせることはできないし。

とりあえずやりたかったことは実現できました。
みなさん、ありがとうございます。

しかし、みきぬ さんがおっしゃってたように、背景画像に合成しようと思ったとき、
リッチテキストのフォントを抜き出して画像に書き込む(合成する?)ことはできないのでしょうか。




引用返信 編集キー/
■26790 / inTopicNo.10)  Re[5]: リッチテキストの文字列をピクチャボックスに表示したい
□投稿者/ みきぬ (159回)-(2008/10/21(Tue) 11:12:31)
2008/10/21(Tue) 11:15:15 編集(投稿者)

No26751 (Kaneda さん) に返信
> やりたいことでいえば、みきぬ さんの考えに近いのでしょうか。
> リッチテキストのフォント設定を読みながら、ピクチャボックスに
> 描画していくような感じのことがしたいのです。
> (背景画像を設定したいというわけではないんですが・・・)
>
これって、文字列を Graphics.DrawString() で描画して、その次の文字列の開始位置を Graphics.MeasureString() で計算して…ってのをひたすら繰り返すっていうイメージですよねぇ。

# 折り返しはどうやって実現するか、とか考えるとこれまたかなり面倒そうだ
引用返信 編集キー/
■26800 / inTopicNo.11)  Re[6]: リッチテキストの文字列をピクチャボックスに表示したい
□投稿者/ Kaneda (5回)-(2008/10/21(Tue) 13:53:41)
No26790 (みきぬ さん) に返信
> これって、文字列を Graphics.DrawString() で描画して、その次の文字列の開始位置を Graphics.MeasureString() で計算して…ってのをひたすら繰り返すっていうイメージですよねぇ。
>
> # 折り返しはどうやって実現するか、とか考えるとこれまたかなり面倒そうだ

そう、そんなイメージです。
やっぱり、みきぬ さんのいう方法を繰り返すしかないんでしょうか。。。
引用返信 編集キー/
■26878 / inTopicNo.12)  Re[6]: リッチテキストの文字列をピクチャボックスに表示したい
□投稿者/ Kaneda (6回)-(2008/10/22(Wed) 15:36:09)
2008/10/22(Wed) 15:38:09 編集(投稿者)

No26790 (みきぬ さん) に返信
> これって、文字列を Graphics.DrawString() で描画して、その次の文字列の開始位置を Graphics.MeasureString() で計算して…ってのをひたすら繰り返すっていうイメージですよねぇ。
>
> # 折り返しはどうやって実現するか、とか考えるとこれまたかなり面倒そうだ

調べていたら同じような質問がありました。
そこにはURL(英語)が紹介されたところで止まってました。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=13657&forum=7
http://www.vb-helper.com/howto_overlay_rich_text.html

とりあえず、サンプル(VB6)を試してみたら、自分のイメージに近かったです。
せっかくなので、VB2005で実現させたいのですが、
どうにも私にはレベルが高くさっぱりわかりません。

丸投げで申し訳ないのですが、VB2005に移植するにはどのように書けばよいのでしょうか

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -