4.RichTextBox に画像を縦横比を保持したまま指定サイズに伸縮して表示(22_Rtf_04) (旧、SampleNo.000) |
1.RichTextBox に画像を縦横比を保持したまま指定サイズに伸縮して表示 2. 3. 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86 Option :[Compare Text] [Explicit On] [Infer On] [Strict On] Imports :追加なし 参照設定:追加なし その他 : : このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので) 必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい) |
1.RichTextBox に画像を縦横比を保持したまま指定サイズに伸縮して表示 |
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'RichTextBox に画像を縦横比を保持したまま指定サイズに伸縮して指定位置に表示 '(RichTextBox に画像を表示する簡単な方法が無いようなので、クリップボード経由で貼り付けております。) RichTextBox1.SelectionStart = 367 '日野菜 のところに画像を挿入します。 Using fs As System.IO.FileStream = New System.IO.FileStream("..\..\..\data_pic\hinona.png", _ System.IO.FileMode.Open, System.IO.FileAccess.Read) Dim bmp As Bitmap = New Bitmap(System.Drawing.Image.FromStream(fs)) '縦横比を保持したまま指定サイズに伸縮設定 Dim mf As Single = 1 '拡大率 If bmp.Width >= bmp.Height Then mf = CSng(NumericUpDown1.Value / bmp.Width) Else mf = CSng(NumericUpDown1.Value / bmp.Height) End If '50 ピクセルより画像が大きい場合は、50 ピクセルまで縮小、画像が小さい場合は拡大 bmp = New Bitmap(bmp, CInt(bmp.Width * mf), CInt(bmp.Height * mf)) '一旦クリップボードを Clear Clipboard.Clear() 'クリップボードに画像をコピー Clipboard.SetDataObject(bmp, True) bmp.Dispose() End Using Dim iData As IDataObject = Clipboard.GetDataObject() 'クリップボードにBMPファイルがあれば RichTextBox に貼り付け If iData.GetDataPresent(DataFormats.Bitmap) Then RichTextBox1.Paste() End If End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click '画像の方はオフセット表示できないので、文字列の方を移動しますので、画像表示行全体を選択しておいて下さい。 RichTextBox1.SelectionStart = 360 '画像を表示した行全体を選択 RichTextBox1.SelectionLength = 45 RichTextBox1.SelectionCharOffset = CInt(NumericUpDown2.Value) RichTextBox1.SelectionLength = 0 End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load RichTextBox1.LoadFile("..\..\..\data\test.rtf", RichTextBoxStreamType.RichText) End Sub 図1.上記実行結果 RichTextBox に画像を表示する簡単な方法が無いようなので、クリップボード経由で貼り付けております。 ついでに画像サイズを指定できるようにしておきましたので、実装時には、テキストボックス等からサイズを指定できるようにでもして下さい。 又、上記画像は、3.選択範囲の文字列を縦方向の指定位置に表示する(上揃え/下揃え)を使って画像を表示した行のテキストを画像の中央に配置されるように設定しております。 |
2. |
3. |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |