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

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

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

Re[8]: richtextboxのある行の画像を取得したい。


(過去ログ 103 を表示中)

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

■61398 / inTopicNo.1)  richtextboxのある行の画像を取得したい。
  
□投稿者/ やんまー (85回)-(2011/08/11(Thu) 16:16:27)

分類:[VB.NET/VB2005 以降] 

richtextboxの各行の情報を取得してlabelまたはpictureboxに表示したいのですが、上手く出来なくて困っています。

まずは、そもそも取得できるのか試す意味で以下のようにしてみました。

---
For Each i As Object In richTextBox1.Lines
  Debug.Print("obj = " & TypeName(i) & i)
Next
---

これを実行すると、すべての行がStringとなりました。

MSDNを見るとたしかに・・・
--------------------------------------------------------------------------
Lines テキスト ボックス コントロールのテキスト行を取得または設定します。
--------------------------------------------------------------------------

なんとかRichtextboxのある行の画像を取得することはできないでしょうか?

引用返信 編集キー/
■61402 / inTopicNo.2)  Re[1]: richtextboxのある行の画像を取得したい。
□投稿者/ ズッカ (1回)-(2011/08/11(Thu) 16:52:10)
No61398 (やんまー さん) に返信
>
> なんとかRichtextboxのある行の画像を取得することはできないでしょうか?
>

ある行の画像って、 Richtextboxに画像が貼ってあって、それを取得したい、ということですか?
それとも、ある行の表示内容をキャプチャしたい、ということですか?
引用返信 編集キー/
■61403 / inTopicNo.3)  Re[2]: richtextboxのある行の画像を取得したい。
□投稿者/ やんまー (86回)-(2011/08/11(Thu) 16:55:13)
ズッカ さん

畏れ入ります。

> Richtextboxに画像が貼ってあって、それを取得したい、ということですか?


です!
引用返信 編集キー/
■61427 / inTopicNo.4)  Re[3]: richtextboxのある行の画像を取得したい。
□投稿者/ すみだ (1回)-(2011/08/12(Fri) 23:28:44)
No61403 (やんまー さん) に返信
RichTextBoxであれば、Rtfプロパティを見れば、画像の情報(サイズ情報やビットマップ情報)がRtfの中にあるので、
それをもとにビットマップを作成すればよいのではないでしょうか。
あるいは、画像の部分をSelectして、クリップボード経由で画像を取得できるかもしれません。
引用返信 編集キー/
■61428 / inTopicNo.5)  Re[4]: richtextboxのある行の画像を取得したい。
□投稿者/ やんまー (87回)-(2011/08/13(Sat) 00:59:36)
すみだ さん

畏れ入ります。

> RichTextBoxであれば、Rtfプロパティを見れば、画像の情報(サイズ情報やビットマップ情報)がRtfの中にあるので、
> それをもとにビットマップを作成すればよいのではないでしょうか。

Rtfプロパティを見る・・・というのが結構難しそうですね。。。。
単純に、○行目の画像を・・・、というわけには行かないのですね・・・



> あるいは、画像の部分をSelectして、クリップボード経由で画像を取得できるかもしれません。

そうですね!その方法でも良さそうです!

ちょっと調べたのですが、各行を選択させることは出来るのでしょうか・・・


Select(Int32, Int32) テキスト ボックスでテキストの範囲を選択します。

と書いてあるので、無理かもしれません。。。

もう少し調べてみます。
引用返信 編集キー/
■61430 / inTopicNo.6)  Re[5]: richtextboxのある行の画像を取得したい。
□投稿者/ すみだ (2回)-(2011/08/13(Sat) 05:49:13)
2011/08/13(Sat) 05:50:00 編集(投稿者)
No61428 (やんまー さん) に返信
>>あるいは、画像の部分をSelectして、クリップボード経由で画像を取得できるかもしれません。
> 
> そうですね!その方法でも良さそうです!
> 
> ちょっと調べたのですが、各行を選択させることは出来るのでしょうか・・・
> 
> 
> Select(Int32, Int32) テキスト ボックスでテキストの範囲を選択します。

VB2008での確認ですが、Selectで画像は選択できます。
ちょっと試してみましたが、例えば、以下の例のように、RichTextBoxの内容をスキャンし、
その内容がOLEオブジェクトであれば、クリップボードにコピーし、クリップボードからイメージを取得する、
という方法があります。

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim img As Image = Nothing

        For i As Integer = 0 To RichTextBox1.TextLength - 1
            RichTextBox1.Select(i, 1)
            If RichTextBox1.SelectionType = RichTextBoxSelectionTypes.Object Then
                RichTextBox1.Copy()
                img = Clipboard.GetImage()
                If img IsNot Nothing Then
                    Exit For
                End If
            End If
        Next

        '以下略

    End Sub

引用返信 編集キー/
■61446 / inTopicNo.7)  Re[6]: richtextboxのある行の画像を取得したい。
□投稿者/ やんまー (88回)-(2011/08/13(Sat) 14:24:04)
すみだ さん


ありがとうございます。
改行から改行、というふうにすれば各行を選択できそうでした。




ただ、やはり、そのデータを適切に処理して他の場所に表示したりするのは難しそうだと思ってしまいました
http://dobon.net/vb/dotnet/graphics/getclipboardmetafile.html

RTF形式だと、
画像とテキストの混在した行も可能ですし、
やはり単純には行かなそうですね。。。



今回はもう少し違う方法を考えたいと思います。

サンプルコードまで考えて下すって大変申し訳ありませんでした 汗

引用返信 編集キー/
■61447 / inTopicNo.8)  Re[7]: richtextboxのある行の画像を取得したい。
□投稿者/ すみだ (3回)-(2011/08/13(Sat) 16:02:00)
No61446 (やんまー さん) に返信

> ただ、やはり、そのデータを適切に処理して他の場所に表示したりするのは難しそうだと思ってしまいました
> http://dobon.net/vb/dotnet/graphics/getclipboardmetafile.html
>
> RTF形式だと、
> 画像とテキストの混在した行も可能ですし、
> やはり単純には行かなそうですね。。。

あの、私が提示したサンプルコードは、RichTextBoxの表示内容のすべて(文字/画像等)を一つずつスキャンして、
画像があったらクリップボード経由で取得する、というものですので、スキャンの範囲を対象行に限定すれば
その行に文字と画像が混在したものでも大丈夫ですよ。

私の提示したサンプルコードをお試し頂いたものと思いますが、どこに問題があったのでしょうか?
引用返信 編集キー/
■61464 / inTopicNo.9)  Re[8]: richtextboxのある行の画像を取得したい。
□投稿者/ やんまー (89回)-(2011/08/14(Sun) 01:50:54)
2011/08/16(Tue) 01:19:38 編集(投稿者)

すみだ さん

> 私の提示したサンプルコードをお試し頂いたものと思いますが、どこに問題があったのでしょうか?


理解不足で諦めてしまったのに、大変畏れ入ります。

改めて試させていただいたところ、Pictureboxに画像を移すことに成功しました!
なぜか、出来なかったのですが、改めて試したところ正常に動作しました。

以下略をこのようにしました。
---------
pictureBox1.Image= img
pictureBox1.Refresh
-------

実は
・テキストだけの行
・画像だけの行
というふうにわけて処理したかったので、やっぱり難しそうだと思ってしまっていました。

しかし、教えていただいたRichTextBox1.SelectionType の判定の部分で
場合分けができそうですので、
テキストだけの行と画像だけの行でArraylistに格納して
いろいろあとの処理ができそうです!

ありがとうございました!感謝致します!!


解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -