DataGridViewを使ってみた
↑ここ見ながら
昨日テストしていたListViewに画像を表示するにはImageListに
画像を登録してそこから表示したい画像を選択して表示するという2手必要だった
しかもImageListはサイズが異る画像を登録しても一回決めたサイズに
拡大縮小されてぼやけてしまっていた
今回使ってみたDataGridViewは表示する画像は等倍で表示できるのでぼやけないし
用意した画像をそのまま指定すればいいだけ、素晴らしい
DataGridViewはいままでのクラスと違って使い方が難しそうだけどかなりいろいろなことができるみたい
見た目がエクセルに似ているのも面白いなあ
コードにもエクセルVBAで馴染みのあるcellやRow、Columnがでてくる
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dgv As New DataGridView()
With dgv
.Dock = DockStyle.Fill
.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
.AllowUserToAddRows = False
.ReadOnly = True
End With
Dim column1 As New DataGridViewTextBoxColumn
column1.HeaderText = "1列目の見出し"
Dim column2 As New DataGridViewImageColumn
column2.HeaderText = "2列目の見出し"
dgv.Columns.Add(column1)
dgv.Columns.Add(column2)
With dgv.Rows
.Add("Asterisk", SystemIcons.Asterisk)
.Add("Error", SystemIcons.Error)
.Add("Exclamation", SystemIcons.Exclamation)
.Add("Question", SystemIcons.Question)
.Add("WinLogo", SystemIcons.WinLogo)
End With
Dim rowIndex As Integer = dgv.Rows.Add
With dgv.Rows(rowIndex)
.Cells(0).Value = "Shield"
.Cells(1).Value = SystemIcons.Shield
End With
rowIndex = dgv.Rows.Add()
dgv(0, rowIndex).Value = "Information"
dgv(1, rowIndex).Value = SystemIcons.Information
Dim mozi() As String = {"Meiryo UI", "MS ゴシック", "游ゴシック"}
Dim myB() As Brush = {New SolidBrush(Color.Red), New SolidBrush(Color.Blue), New SolidBrush(Color.Orange)}
Dim img As Image
For i As Integer = 0 To UBound(mozi)
img = img画像作成(mozi(i), myB(i))
rowIndex = dgv.Rows.Add
With dgv.Rows(rowIndex)
.Cells(0).Value = mozi(i)
.Cells(1).Value = img
End With
Next
Me.Controls.Add(dgv)
End Sub
Private Function img画像作成(mozi As String, myB As Brush) As Image
Dim canvas As New Bitmap(1, 1)
Dim g As Graphics = Graphics.FromImage(canvas)
Dim myFont As Font
Dim fSize As Integer = 30
myFont = New Font(mozi, fSize)
Dim drawSize As SizeF = g.MeasureString(mozi, myFont)
Dim w As Integer = CInt(drawSize.Width)
Dim h As Integer = CInt(drawSize.Height)
canvas = New Bitmap(w, h)
g = Graphics.FromImage(canvas)
g.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
g.DrawString(mozi, myFont, myB, 0, 0)
g.Dispose()
Return canvas
End Function
End Class
今回のを使って