Excel VBAでマップ画像を作成するマクロを作ってみました。等高線の描画もできます。ちょっと長いですが、ソースコードを以下に載せます。標準モジュールにコピーすれば使えるはずです。
sample_data関数で適当なデータを作ります。draw関数でマップを作って描画します。趣味なのでコメントとかは少ないですが、ソースコードを見れば、内容は分かると思います。
Excelでビットマップを描画しているところがポイントです。しかも、Windows APIを使わずに文字列を描画しています。本当はPNG保存にしたかったんですが、難しい点があったので、ペイントを起動する関数だけ用意しました。
元々はSiウェハ上の測定データからマップを作るマクロなんですが、いろいろと応用できると思います。
興味ある方は、ご自由にご利用ください。
2016/2/21 ソースコードを新しくしました。
Option Explicit
Public Const PI = 3.1415926535
'---------- 画像関連パラメータ ----------
Private Const IMAGE_SIZE As Long = 256
Private Const MARGIN_SIZE As Long = 16
Private Const MAP_IMAGE As String = "MAP_IMAGE"
'----------------------------------------
'データ座標の範囲
Private Const DATA_SCALE As Double = 200
'等高線の分割数
Private Const NUM_CONTOUR_LEVELS As Integer = 8
'フォントのビットマップデータ
Private fnt() As Byte
'---------- カラーマップ関連パラメータ ----------
Private Const COLOR_MAP_TYPE_GRAY As Integer = 1
Private Const COLOR_MAP_TYPE_JET1 As Integer = 2
Private Const COLOR_MAP_TYPE_JET2 As Integer = 3
Private Const COLOR_MAP_TYPE_HSV As Integer = 4
Private color_map_type As Integer
Private color_min As Double
Private color_max As Double
'------------------------------------------------
'---------- 補間関連パラメータ ----------
Private Const INTERPOLATION_TYPE_LINEAR As Integer = 1
Private Const INTERPOLATION_TYPE_GAUSS As Integer = 2
Private interpolation_type As Integer
Private range As Double
Private sigma As Double
'----------------------------------------
Private Sub test_bitmap()
Dim i As Long
Dim j As Long
Dim width As Long
Dim height As Long
Dim pos As Long
Dim data() As Byte
Dim filename As String
'------------------------------
'データの作成
width = 256
height = 128
ReDim data(width * height * 3 - 1) As Byte
For i = 0 To height - 1
For j = 0 To width - 1
pos = (width * i + j) * 3
data(pos + 0) = CByte(255) 'Blue
data(pos + 1) = CByte(255 / height * i) 'Green
data(pos + 2) = CByte(255 / width * j) 'Red
Next j
Next i
drawString data, width, height, "Hello", 30, 60
'------------------------------
filename = ThisWorkbook.Path + "\test.bmp"
'ファイルに書き出す
writeBitmap filename, data, width, height
End Sub
Private Sub test_color_map()
Dim i As Long
Dim r As Byte
Dim g As Byte
Dim b As Byte
For i = 0 To 31
hsv2rgb CByte(255 * i / 32), r, g, b
'jet2rgb1 CByte(255 * i / 32), r, g, b
'jet2rgb2 CByte(255 * i / 32), r, g, b
'適当な位置に表示
Sheet1.Cells(1 + i, 10) = i
Sheet1.Cells(1 + i, 11) = r
Sheet1.Cells(1 + i, 12) = g
Sheet1.Cells(1 + i, 13) = b
Next i
End Sub
Private Sub test_weight()
Dim i As Long
Dim w As Double
range = Sheet1.Cells(9, 3).value
sigma = Sheet1.Cells(10, 3).value
For i = 0 To 63
If i < range Then
w = CDbl(1) - i / range
'w = Exp(-i * i / sigma / sigma)
Else
w = 0
End If
'適当な位置に表示
Sheet1.Cells(1 + i, 10) = i
Sheet1.Cells(1 + i, 11) = w
Next i
End Sub
'テストデータの作成
Public Sub sample_data()
Dim i As Long
Dim N As Long
Dim x As Double
Dim y As Double
Dim data As Double
Sheet1.Cells.Delete
Sheet1.Cells(1, 1) = "title"
Sheet1.Cells(1, 3) = "sample"
Sheet1.Cells(2, 1) = "show"
Sheet1.Cells(2, 2) = "map"
Sheet1.Cells(2, 3).Validation.Delete
Sheet1.Cells(2, 3) = "ON"
Sheet1.Cells(2, 3).Validation.Add Type:=xlValidateList, Formula1:="ON,off"
Sheet1.Cells(3, 2) = "contour"
Sheet1.Cells(3, 3).Validation.Delete
Sheet1.Cells(3, 3).Validation.Add Type:=xlValidateList, Formula1:="ON,off"
Sheet1.Cells(3, 3) = "ON"
Sheet1.Cells(4, 2) = "data point"
Sheet1.Cells(4, 3).Validation.Delete
Sheet1.Cells(4, 3).Validation.Add Type:=xlValidateList, Formula1:="ON,off"
Sheet1.Cells(4, 3) = "ON"
Sheet1.Cells(5, 1) = "color"
Sheet1.Cells(5, 2) = "type"
Sheet1.Cells(5, 3) = "jet2"
Sheet1.Cells(5, 3).Validation.Delete
Sheet1.Cells(5, 3).Validation.Add Type:=xlValidateList, Formula1:="gray,jet1,jet2,hsv"
Sheet1.Cells(6, 2) = "min"
Sheet1.Cells(6, 3) = "=MIN(c13:c256)"
Sheet1.Cells(6, 3).NumberFormatLocal = "0.00_ "
Sheet1.Cells(7, 2) = "max"
Sheet1.Cells(7, 3) = "=Max(c13:c256)"
Sheet1.Cells(7, 3).NumberFormatLocal = "0.00_ "
Sheet1.Cells(8, 1) = "interpolation"
Sheet1.Cells(8, 2) = "type"
Sheet1.Cells(8, 3) = "linear"
Sheet1.Cells(8, 3).Validation.Delete
Sheet1.Cells(8, 3).Validation.Add Type:=xlValidateList, Formula1:="linear,gauss"
Sheet1.Cells(9, 2) = "range"
Sheet1.Cells(9, 3) = 50
Sheet1.Cells(10, 2) = "sigma"
Sheet1.Cells(10, 3) = 16
Sheet1.Cells(12, 1) = "x"
Sheet1.Cells(12, 2) = "y"
Sheet1.Cells(12, 3) = "data"
N = 64
For i = 0 To N - 1
x = DATA_SCALE / 2 * i / N * Math.Cos(6 * PI * i / N)
y = DATA_SCALE / 2 * i / N * Math.Sin(6 * PI * i / N)
data = Exp((-x ^ 2 - y ^ 2) / (2 * 50 * 50))
Sheet1.Cells(i + 13, 1) = x
Sheet1.Cells(i + 13, 2) = y
Sheet1.Cells(i + 13, 3) = data
Next i
End Sub
'マップ描画マクロ本体
Public Sub draw()
Dim i As Long
Dim str As String
Dim N As Long
Dim xPos() As Double
Dim yPos() As Double
Dim data() As Double
Dim mapData() As Double '補間後データ
Dim weight() As Double '重みデータ
Dim imgData() As Byte '画像データ
'--------------------------------------------------
'データの取得
getParameter
Sheet1.Cells(12, 3).Select
If Sheet1.Cells(13, 3) = "" Then Exit Sub
N = Selection.End(xlDown).Row - 12
ReDim xPos(N - 1) As Double
ReDim yPos(N - 1) As Double
ReDim data(N - 1) As Double
For i = 0 To N - 1
xPos(i) = Sheet1.Cells(i + 13, 1).value
yPos(i) = Sheet1.Cells(i + 13, 2).value
data(i) = Sheet1.Cells(i + 13, 3).value
Next i
ReDim mapData(IMAGE_SIZE * IMAGE_SIZE - 1) As Double
ReDim weight(IMAGE_SIZE * IMAGE_SIZE - 1) As Double
ReDim imgData(IMAGE_SIZE * IMAGE_SIZE * 3 - 1) As Byte
'--------------------------------------------------
'データの補間
gridding mapData, weight, xPos, yPos, data, N
'--------------------------------------------------
'画像の作成
For i = 0 To IMAGE_SIZE * IMAGE_SIZE * 3 - 1
imgData(i) = CByte(255)
Next i
str = Sheet1.Cells(1, 3).Text
drawString imgData, IMAGE_SIZE, IMAGE_SIZE, str, 0, IMAGE_SIZE - 16
If Sheet1.Cells(2, 3) = "ON" Then
drawMap imgData, mapData
drawColorScale imgData
str = Sheet1.Cells(6, 3).Text
drawString imgData, IMAGE_SIZE, IMAGE_SIZE, str, IMAGE_SIZE / 4 - 8 * Len(str), 0
str = Sheet1.Cells(7, 3).Text
drawString imgData, IMAGE_SIZE, IMAGE_SIZE, str, IMAGE_SIZE * 3 / 4, 0
End If
If Sheet1.Cells(3, 3) = "ON" Then
drawContour imgData, mapData
End If
If Sheet1.Cells(4, 3) = "ON" Then
drawDataPoints imgData, xPos, yPos, N
End If
drawEdge imgData
ChDir ThisWorkbook.Path
writeBitmap "map.bmp", imgData, IMAGE_SIZE, IMAGE_SIZE
'--------------------------------------------------
'重み画像の保存
For i = 0 To IMAGE_SIZE * IMAGE_SIZE * 3 - 1
imgData(i) = CByte(255)
Next i
drawString imgData, IMAGE_SIZE, IMAGE_SIZE, "weight", 0, IMAGE_SIZE - 16
drawWeight imgData, weight
drawColorScale imgData
drawDataPoints imgData, xPos, yPos, N
drawEdge imgData
writeBitmap "weight.bmp", imgData, IMAGE_SIZE, IMAGE_SIZE
'--------------------------------------------------
'画像の貼り付け
Dim shp As Shape
For Each shp In Sheet1.Shapes
If shp.Name = MAP_IMAGE Then shp.Delete
Next
Set shp = Sheet1.Shapes.AddPicture("map.bmp", False, True, 250, 50, IMAGE_SIZE, IMAGE_SIZE)
shp.Name = MAP_IMAGE
End Sub
'パラメータの取得
Private Sub getParameter()
Select Case Sheet1.Cells(5, 3)
Case "gray"
color_map_type = COLOR_MAP_TYPE_GRAY
Case "jet1"
color_map_type = COLOR_MAP_TYPE_JET1
Case "jet2"
color_map_type = COLOR_MAP_TYPE_JET2
Case "hsv"
color_map_type = COLOR_MAP_TYPE_HSV
End Select
color_min = Sheet1.Cells(6, 3).value
color_max = Sheet1.Cells(7, 3).value
Select Case Sheet1.Cells(8, 3)
Case "linear"
interpolation_type = INTERPOLATION_TYPE_LINEAR
Case "gauss"
interpolation_type = INTERPOLATION_TYPE_GAUSS
End Select
range = Sheet1.Cells(9, 3).value
sigma = Sheet1.Cells(10, 3).value
End Sub
'マップの描画
Private Sub drawMap(ByRef imgData() As Byte, mapData() As Double)
Dim i As Long
Dim j As Long
Dim pos As Long
Dim temp As Long
Dim r As Byte
Dim g As Byte
Dim b As Byte
For i = MARGIN_SIZE To IMAGE_SIZE - MARGIN_SIZE - 1
'円形の領域だけ描画
temp = Sqr((IMAGE_SIZE / 2 - MARGIN_SIZE) ^ 2 - (IMAGE_SIZE / 2 - i) ^ 2)
For j = IMAGE_SIZE / 2 - temp To IMAGE_SIZE / 2 + temp
pos = i * IMAGE_SIZE + j
getColor mapData(pos), color_min, color_max, r, g, b
imgData(pos * 3 + 0) = b
imgData(pos * 3 + 1) = g
imgData(pos * 3 + 2) = r
Next j
Next i
End Sub
'重みマップの描画
Private Sub drawWeight(ByRef imgData() As Byte, weight() As Double)
Dim i As Long
Dim j As Long
Dim min As Double
Dim max As Double
Dim pos As Long
Dim temp As Long
Dim r As Byte
Dim g As Byte
Dim b As Byte
min = weight(0)
max = weight(0)
For i = 0 To IMAGE_SIZE * IMAGE_SIZE - 1
If max < weight(i) Then
max = weight(i)
End If
If weight(i) < min Then
min = weight(i)
End If
Next i
For i = MARGIN_SIZE To IMAGE_SIZE - MARGIN_SIZE - 1
'円形の領域だけ描画
temp = Sqr((IMAGE_SIZE / 2 - MARGIN_SIZE) ^ 2 - (IMAGE_SIZE / 2 - i) ^ 2)
For j = IMAGE_SIZE / 2 - temp To IMAGE_SIZE / 2 + temp
pos = i * IMAGE_SIZE + j
getColor weight(pos), min, max, r, g, b
imgData(pos * 3 + 0) = b
imgData(pos * 3 + 1) = g
imgData(pos * 3 + 2) = r
Next j
Next i
End Sub
'カラースケールを描画
Private Sub drawColorScale(ByRef imgData() As Byte)
Dim i As Long
Dim j As Long
Dim pos As Long
Dim r As Byte
Dim g As Byte
Dim b As Byte
For i = MARGIN_SIZE / 4 To MARGIN_SIZE * 3 / 4 - 1
For j = IMAGE_SIZE / 4 To IMAGE_SIZE * 3 / 4 - 1
pos = i * IMAGE_SIZE + j
getColor CDbl(j - IMAGE_SIZE / 4), 0, IMAGE_SIZE / 2 - 1, r, g, b
imgData(pos * 3 + 0) = b
imgData(pos * 3 + 1) = g
imgData(pos * 3 + 2) = r
Next j
Next i
End Sub
'等高線を描画
'隣のピクセルとの間に等高線があるかをチェックして、あれば黒く塗りつぶす
Private Sub drawContour(ByRef imgData() As Byte, mapData() As Double)
Dim i As Long
Dim ix As Long
Dim iy As Long
Dim pos As Long
Dim temp As Long
Dim level() As Double
ReDim level(NUM_CONTOUR_LEVELS + 1) As Double
For i = 0 To NUM_CONTOUR_LEVELS
level(i) = color_min + (color_max - color_min) * i / NUM_CONTOUR_LEVELS
Next i
For iy = MARGIN_SIZE To IMAGE_SIZE - MARGIN_SIZE - 1
temp = Sqr((IMAGE_SIZE / 2 - MARGIN_SIZE) ^ 2 - (IMAGE_SIZE / 2 - iy) ^ 2)
For ix = IMAGE_SIZE / 2 - temp To IMAGE_SIZE / 2 + temp
pos = iy * IMAGE_SIZE + ix
For i = 1 To NUM_CONTOUR_LEVELS - 1
'隣(右と下)のピクセルをチェック
If (mapData(pos) - level(i)) * (mapData(pos + 1) - level(i)) < 0 _
Or (mapData(pos) - level(i)) * (mapData(pos + IMAGE_SIZE) - level(i)) < 0 Then
imgData(pos * 3 + 0) = CByte(0)
imgData(pos * 3 + 1) = CByte(0)
imgData(pos * 3 + 2) = CByte(0)
End If
Next i
Next ix
Next iy
End Sub
'データ点の描画
Private Sub drawDataPoints(ByRef imgData() As Byte, xPos() As Double, yPos() As Double, N As Long)
Dim i As Long
Dim j As Long
Dim ix As Long
Dim iy As Long
Dim pos(4) As Long
Dim ratio As Double
ratio = (IMAGE_SIZE - 2 * MARGIN_SIZE) / DATA_SCALE
For i = 0 To N - 1
If Math.Abs(xPos(i)) < DATA_SCALE / 2 And Math.Abs(yPos(i)) < DATA_SCALE / 2 Then
ix = xPos(i) * ratio + IMAGE_SIZE / 2
iy = yPos(i) * ratio + IMAGE_SIZE / 2
If 0 <= ix And ix < IMAGE_SIZE And 0 <= iy And iy < IMAGE_SIZE Then
pos(0) = iy * IMAGE_SIZE + ix
pos(1) = pos(0) - 1
pos(2) = pos(0) + IMAGE_SIZE
pos(3) = pos(0) + 1
pos(4) = pos(0) - IMAGE_SIZE
For j = 0 To 4
imgData(pos(j) * 3 + 0) = CByte(0)
imgData(pos(j) * 3 + 1) = CByte(0)
imgData(pos(j) * 3 + 2) = CByte(0)
Next j
End If
End If
Next i
End Sub
'輪郭の描画
Private Sub drawEdge(ByRef imgData() As Byte)
Dim i As Long
Dim j As Long
Dim ix As Long
Dim iy As Long
Dim pos(3) As Long
For i = 0 To IMAGE_SIZE
iy = (IMAGE_SIZE / 2 - MARGIN_SIZE) * Math.Sin(PI * i / 2 / IMAGE_SIZE)
ix = (IMAGE_SIZE / 2 - MARGIN_SIZE) * Math.Cos(PI * i / 2 / IMAGE_SIZE)
pos(0) = (IMAGE_SIZE / 2 + iy) * IMAGE_SIZE + IMAGE_SIZE / 2 + ix
pos(1) = (IMAGE_SIZE / 2 + ix) * IMAGE_SIZE + IMAGE_SIZE / 2 - iy
pos(2) = (IMAGE_SIZE / 2 - iy) * IMAGE_SIZE + IMAGE_SIZE / 2 - ix
pos(3) = (IMAGE_SIZE / 2 - ix) * IMAGE_SIZE + IMAGE_SIZE / 2 + iy
For j = 0 To 3
imgData(pos(j) * 3 + 0) = CByte(0)
imgData(pos(j) * 3 + 1) = CByte(0)
imgData(pos(j) * 3 + 2) = CByte(0)
Next j
Next i
End Sub
'2次元のグリッディング
Private Sub gridding(ByRef mapData() As Double, ByRef weight() As Double, xPos() As Double, yPos() As Double, data() As Double, N As Long)
Dim i As Long
Dim ix As Long
Dim iy As Long
Dim pos As Long
Dim left As Long
Dim top As Long
Dim right As Long
Dim bottom As Long
Dim range2 As Double
Dim sigma2 As Double
Dim ratio As Double
Dim x2 As Double
Dim y2 As Double
Dim r2 As Double
Dim w As Double
'メモリの初期化
For i = 0 To IMAGE_SIZE * IMAGE_SIZE - 1
mapData(i) = 0
weight(i) = 0
Next i
range2 = range ^ 2
sigma2 = 2 * sigma ^ 2
ratio = (IMAGE_SIZE - 2 * MARGIN_SIZE) / DATA_SCALE
'グリッディング
For i = 0 To N - 1
'ループ領域を計算
bottom = (yPos(i) - range) * ratio + IMAGE_SIZE / 2
top = (yPos(i) + range) * ratio + IMAGE_SIZE / 2
left = (xPos(i) - range) * ratio + IMAGE_SIZE / 2
right = (xPos(i) + range) * ratio + IMAGE_SIZE / 2
'ループ領域を確認
If bottom < 0 Then bottom = 0
If IMAGE_SIZE - 1 < bottom Then bottom = IMAGE_SIZE - 1
If top < 0 Then top = 0
If IMAGE_SIZE - 1 < top Then top = IMAGE_SIZE - 1
If left < 0 Then left = 0
If IMAGE_SIZE - 1 < left Then left = IMAGE_SIZE - 1
If right < 0 Then right = 0
If IMAGE_SIZE - 1 < right Then right = IMAGE_SIZE - 1
'重みつき平均の計算
For iy = bottom To top
y2 = ((iy - IMAGE_SIZE / 2) / ratio - yPos(i)) ^ 2
For ix = left To right
x2 = ((ix - IMAGE_SIZE / 2) / ratio - xPos(i)) ^ 2
r2 = x2 + y2
If r2 < range2 Then
If interpolation_type = INTERPOLATION_TYPE_LINEAR Then
w = CDbl(1) - Sqr(r2) / range
ElseIf interpolation_type = INTERPOLATION_TYPE_GAUSS Then
w = Exp(-r2 / sigma2)
End If
pos = iy * IMAGE_SIZE + ix
mapData(pos) = mapData(pos) + w * data(i)
weight(pos) = weight(pos) + w
End If
Next ix
Next iy
Next i
'重みで規格化
For i = 0 To IMAGE_SIZE * IMAGE_SIZE - 1
If 0.000001 < weight(i) Then
mapData(i) = mapData(i) / weight(i)
Else
mapData(i) = 0
End If
Next i
End Sub
'文字の描画
'x,y : 描画する文字の左下の座標(ビットマップと同じ座標系)
Private Sub drawString(ByRef imgData() As Byte, width As Long, height As Long, str As String, x As Long, y As Long)
Dim i As Long
Dim j As Long
Dim k As Long
Dim key As Long
Dim pos As Long
Dim temp As Byte
createFont
For i = 0 To Len(str) - 1
key = Asc(Mid(str, i + 1, 1))
For j = 0 To 15
temp = fnt((key - 32) * 16 + j)
For k = 0 To 7
If temp Mod 2 = 1 And 0 <= x + 8 * i + k And x + 8 * i + k < width And 0 <= y + j And y + j < height Then
pos = ((y + j) * width + (x + 8 * i + k)) * 3
imgData(pos + 0) = CByte(0)
imgData(pos + 1) = CByte(0)
imgData(pos + 2) = CByte(0)
End If
temp = temp \ 2
Next k
Next j
Next i
End Sub
Private Sub getColor(data As Double, min As Double, max As Double, ByRef r As Byte, ByRef g As Byte, ByRef b As Byte)
Dim temp As Double
temp = data
If temp < min Then temp = min
If max < temp Then temp = max
temp = 255# * (temp - min) / (max - min)
If color_map_type = COLOR_MAP_TYPE_GRAY Then
b = CByte(temp)
g = CByte(temp)
r = CByte(temp)
ElseIf color_map_type = COLOR_MAP_TYPE_JET1 Then
jet2rgb1 CByte(temp), r, g, b
ElseIf color_map_type = COLOR_MAP_TYPE_JET2 Then
jet2rgb2 CByte(temp), r, g, b
ElseIf color_map_type = COLOR_MAP_TYPE_HSV Then
hsv2rgb CByte(temp), r, g, b
End If
End Sub
Private Sub hsv2rgb(value As Byte, ByRef r As Byte, ByRef g As Byte, ByRef b As Byte)
Dim temp As Double
temp = value / 255#
If temp < 1 / 6 Then
r = CByte(255)
g = CByte(255 * (6 * temp))
b = CByte(0)
ElseIf temp < 2 / 6 Then
r = CByte(255 * (2 - 6 * temp))
g = CByte(255)
b = CByte(0)
ElseIf temp < 3 / 6 Then
r = CByte(0)
g = CByte(255)
b = CByte(255 * (6 * temp - 2))
ElseIf temp < 4 / 6 Then
r = CByte(0)
g = CByte(255 * (4 - 6 * temp))
b = CByte(255)
ElseIf temp < 5 / 6 Then
r = CByte(255 * (6 * temp - 4))
g = CByte(0)
b = CByte(255)
Else
r = CByte(255)
g = CByte(0)
b = CByte(255 * (6 - 6 * temp))
End If
End Sub
Private Sub jet2rgb1(value As Byte, ByRef r As Byte, ByRef g As Byte, ByRef b As Byte)
Dim temp As Double
temp = value / 255#
If temp < 1 / 8 Then
r = CByte(0)
g = CByte(0)
b = CByte(255 * (4 * temp + 0.5))
ElseIf temp < 3 / 8 Then
r = CByte(0)
g = CByte(255 * (4 * temp - 0.5))
b = CByte(255)
ElseIf temp < 5 / 8 Then
r = CByte(255 * (4 * temp - 1.5))
g = CByte(255)
b = CByte(255 * (2.5 - 4 * temp))
ElseIf temp < 7 / 8 Then
r = CByte(255)
g = CByte(255 * (3.5 - 4 * temp))
b = CByte(0)
Else
r = CByte(255 * (4.5 - 4 * temp))
g = CByte(0)
b = CByte(0)
End If
End Sub
Private Sub jet2rgb2(value As Byte, ByRef r As Byte, ByRef g As Byte, ByRef b As Byte)
If value < 256 / 3 Then
r = CByte(0)
g = CByte(255 * Math.Sin(PI * value / 255))
b = CByte(255 * Math.Sin(PI * value / 255 + PI / 3))
ElseIf value < 512 / 3 Then
r = CByte(255 * Math.Sin(PI * value / 255 - PI / 3))
g = CByte(255 * Math.Sin(PI * value / 255))
b = CByte(255 * Math.Sin(PI * value / 255 + PI / 3))
Else
r = CByte(255 * Math.Sin(PI * value / 255 - PI / 3))
g = CByte(255 * Math.Sin(PI * value / 255))
b = CByte(0)
End If
End Sub
'ペイントを呼び出す
Public Sub shell_paint()
Dim id As Long
id = Shell("mspaint.exe map.bmp", vbNormalFocus)
End Sub
'Bitmapを描画 (24bitフルカラーのみ対応)
Private Sub writeBitmap(filename As String, imgData() As Byte, width As Long, height As Long)
'バイナリファイルに書き込む
Open filename For Binary As 1
Put 1, , "BM"
Put 1, , CLng(3) * width * height + 54
Put 1, , CInt(0)
Put 1, , CInt(0)
Put 1, , CLng(54)
Put 1, , CLng(40)
Put 1, , CLng(width)
Put 1, , CLng(height)
Put 1, , CInt(1)
Put 1, , CInt(24)
Put 1, , CLng(0)
Put 1, , CLng(3) * width * height
Put 1, , CLng(0)
Put 1, , CLng(0)
Put 1, , CLng(0)
Put 1, , CLng(0)
'画像データ
Put 1, , imgData
Close 1
End Sub
'フォントのビットマップデータ
Private Sub createFont()
ReDim fnt(16 * 96 - 1) As Byte
fnt(0) = 0: fnt(1) = 0: fnt(2) = 0: fnt(3) = 0: fnt(4) = 0: fnt(5) = 0: fnt(6) = 0: fnt(7) = 0: fnt(8) = 0: fnt(9) = 0: fnt(10) = 0: fnt(11) = 0: fnt(12) = 0: fnt(13) = 0: fnt(14) = 0: fnt(15) = 0
fnt(16) = 0: fnt(17) = 0: fnt(18) = 24: fnt(19) = 24: fnt(20) = 0: fnt(21) = 0: fnt(22) = 8: fnt(23) = 8: fnt(24) = 8: fnt(25) = 8: fnt(26) = 8: fnt(27) = 8: fnt(28) = 8: fnt(29) = 8: fnt(30) = 8: fnt(31) = 0
fnt(32) = 0: fnt(33) = 0: fnt(34) = 0: fnt(35) = 0: fnt(36) = 0: fnt(37) = 0: fnt(38) = 0: fnt(39) = 0: fnt(40) = 0: fnt(41) = 0: fnt(42) = 0: fnt(43) = 0: fnt(44) = 0: fnt(45) = 18: fnt(46) = 36: fnt(47) = 108
fnt(48) = 0: fnt(49) = 18: fnt(50) = 18: fnt(51) = 18: fnt(52) = 18: fnt(53) = 63: fnt(54) = 18: fnt(55) = 18: fnt(56) = 18: fnt(57) = 18: fnt(58) = 127: fnt(59) = 36: fnt(60) = 36: fnt(61) = 36: fnt(62) = 36: fnt(63) = 0
fnt(64) = 0: fnt(65) = 8: fnt(66) = 28: fnt(67) = 42: fnt(68) = 73: fnt(69) = 73: fnt(70) = 72: fnt(71) = 40: fnt(72) = 24: fnt(73) = 12: fnt(74) = 10: fnt(75) = 73: fnt(76) = 73: fnt(77) = 42: fnt(78) = 28: fnt(79) = 8
fnt(80) = 0: fnt(81) = 0: fnt(82) = 49: fnt(83) = 73: fnt(84) = 74: fnt(85) = 74: fnt(86) = 52: fnt(87) = 4: fnt(88) = 8: fnt(89) = 16: fnt(90) = 22: fnt(91) = 41: fnt(92) = 41: fnt(93) = 73: fnt(94) = 70: fnt(95) = 0
fnt(96) = 0: fnt(97) = 0: fnt(98) = 70: fnt(99) = 41: fnt(100) = 17: fnt(101) = 17: fnt(102) = 41: fnt(103) = 42: fnt(104) = 4: fnt(105) = 12: fnt(106) = 18: fnt(107) = 18: fnt(108) = 18: fnt(109) = 18: fnt(110) = 12: fnt(111) = 0
fnt(112) = 0: fnt(113) = 0: fnt(114) = 0: fnt(115) = 0: fnt(116) = 0: fnt(117) = 0: fnt(118) = 0: fnt(119) = 0: fnt(120) = 0: fnt(121) = 0: fnt(122) = 0: fnt(123) = 0: fnt(124) = 4: fnt(125) = 8: fnt(126) = 12: fnt(127) = 12
fnt(128) = 0: fnt(129) = 32: fnt(130) = 16: fnt(131) = 8: fnt(132) = 8: fnt(133) = 4: fnt(134) = 4: fnt(135) = 4: fnt(136) = 4: fnt(137) = 4: fnt(138) = 4: fnt(139) = 4: fnt(140) = 8: fnt(141) = 8: fnt(142) = 16: fnt(143) = 64
fnt(144) = 0: fnt(145) = 2: fnt(146) = 4: fnt(147) = 8: fnt(148) = 8: fnt(149) = 16: fnt(150) = 16: fnt(151) = 16: fnt(152) = 16: fnt(153) = 16: fnt(154) = 16: fnt(155) = 16: fnt(156) = 8: fnt(157) = 8: fnt(158) = 4: fnt(159) = 4
fnt(160) = 0: fnt(161) = 0: fnt(162) = 0: fnt(163) = 0: fnt(164) = 8: fnt(165) = 73: fnt(166) = 42: fnt(167) = 28: fnt(168) = 8: fnt(169) = 28: fnt(170) = 42: fnt(171) = 73: fnt(172) = 8: fnt(173) = 0: fnt(174) = 0: fnt(175) = 0
fnt(176) = 0: fnt(177) = 0: fnt(178) = 0: fnt(179) = 0: fnt(180) = 0: fnt(181) = 8: fnt(182) = 8: fnt(183) = 8: fnt(184) = 127: fnt(185) = 8: fnt(186) = 8: fnt(187) = 8: fnt(188) = 0: fnt(189) = 0: fnt(190) = 0: fnt(191) = 0
fnt(192) = 0: fnt(193) = 4: fnt(194) = 8: fnt(195) = 12: fnt(196) = 12: fnt(197) = 0: fnt(198) = 0: fnt(199) = 0: fnt(200) = 0: fnt(201) = 0: fnt(202) = 0: fnt(203) = 0: fnt(204) = 0: fnt(205) = 0: fnt(206) = 0: fnt(207) = 0
fnt(208) = 0: fnt(209) = 0: fnt(210) = 0: fnt(211) = 0: fnt(212) = 0: fnt(213) = 0: fnt(214) = 0: fnt(215) = 0: fnt(216) = 62: fnt(217) = 0: fnt(218) = 0: fnt(219) = 0: fnt(220) = 0: fnt(221) = 0: fnt(222) = 0: fnt(223) = 0
fnt(224) = 0: fnt(225) = 0: fnt(226) = 12: fnt(227) = 12: fnt(228) = 0: fnt(229) = 0: fnt(230) = 0: fnt(231) = 0: fnt(232) = 0: fnt(233) = 0: fnt(234) = 0: fnt(235) = 0: fnt(236) = 0: fnt(237) = 0: fnt(238) = 0: fnt(239) = 0
fnt(240) = 0: fnt(241) = 0: fnt(242) = 1: fnt(243) = 1: fnt(244) = 2: fnt(245) = 2: fnt(246) = 4: fnt(247) = 4: fnt(248) = 8: fnt(249) = 16: fnt(250) = 16: fnt(251) = 32: fnt(252) = 32: fnt(253) = 64: fnt(254) = 64: fnt(255) = 0
fnt(256) = 0: fnt(257) = 0: fnt(258) = 12: fnt(259) = 18: fnt(260) = 33: fnt(261) = 33: fnt(262) = 33: fnt(263) = 33: fnt(264) = 33: fnt(265) = 33: fnt(266) = 33: fnt(267) = 33: fnt(268) = 33: fnt(269) = 18: fnt(270) = 12: fnt(271) = 0
fnt(272) = 0: fnt(273) = 0: fnt(274) = 8: fnt(275) = 8: fnt(276) = 8: fnt(277) = 8: fnt(278) = 8: fnt(279) = 8: fnt(280) = 8: fnt(281) = 8: fnt(282) = 8: fnt(283) = 8: fnt(284) = 8: fnt(285) = 14: fnt(286) = 8: fnt(287) = 0
fnt(288) = 0: fnt(289) = 0: fnt(290) = 63: fnt(291) = 1: fnt(292) = 2: fnt(293) = 4: fnt(294) = 4: fnt(295) = 8: fnt(296) = 16: fnt(297) = 16: fnt(298) = 32: fnt(299) = 33: fnt(300) = 33: fnt(301) = 18: fnt(302) = 12: fnt(303) = 0
fnt(304) = 0: fnt(305) = 0: fnt(306) = 12: fnt(307) = 18: fnt(308) = 33: fnt(309) = 33: fnt(310) = 32: fnt(311) = 16: fnt(312) = 12: fnt(313) = 16: fnt(314) = 32: fnt(315) = 33: fnt(316) = 33: fnt(317) = 18: fnt(318) = 12: fnt(319) = 0
fnt(320) = 0: fnt(321) = 0: fnt(322) = 16: fnt(323) = 16: fnt(324) = 16: fnt(325) = 63: fnt(326) = 17: fnt(327) = 18: fnt(328) = 18: fnt(329) = 20: fnt(330) = 20: fnt(331) = 24: fnt(332) = 24: fnt(333) = 16: fnt(334) = 16: fnt(335) = 0
fnt(336) = 0: fnt(337) = 0: fnt(338) = 12: fnt(339) = 18: fnt(340) = 33: fnt(341) = 32: fnt(342) = 32: fnt(343) = 32: fnt(344) = 33: fnt(345) = 19: fnt(346) = 13: fnt(347) = 1: fnt(348) = 1: fnt(349) = 1: fnt(350) = 63: fnt(351) = 0
fnt(352) = 0: fnt(353) = 0: fnt(354) = 12: fnt(355) = 18: fnt(356) = 33: fnt(357) = 33: fnt(358) = 33: fnt(359) = 33: fnt(360) = 19: fnt(361) = 13: fnt(362) = 1: fnt(363) = 33: fnt(364) = 33: fnt(365) = 18: fnt(366) = 12: fnt(367) = 0
fnt(368) = 0: fnt(369) = 0: fnt(370) = 4: fnt(371) = 4: fnt(372) = 4: fnt(373) = 4: fnt(374) = 8: fnt(375) = 8: fnt(376) = 8: fnt(377) = 16: fnt(378) = 16: fnt(379) = 16: fnt(380) = 32: fnt(381) = 32: fnt(382) = 63: fnt(383) = 0
fnt(384) = 0: fnt(385) = 0: fnt(386) = 12: fnt(387) = 18: fnt(388) = 33: fnt(389) = 33: fnt(390) = 33: fnt(391) = 18: fnt(392) = 12: fnt(393) = 18: fnt(394) = 33: fnt(395) = 33: fnt(396) = 33: fnt(397) = 18: fnt(398) = 12: fnt(399) = 0
fnt(400) = 0: fnt(401) = 0: fnt(402) = 12: fnt(403) = 18: fnt(404) = 33: fnt(405) = 33: fnt(406) = 32: fnt(407) = 44: fnt(408) = 50: fnt(409) = 33: fnt(410) = 33: fnt(411) = 33: fnt(412) = 33: fnt(413) = 18: fnt(414) = 12: fnt(415) = 0
fnt(416) = 0: fnt(417) = 0: fnt(418) = 0: fnt(419) = 12: fnt(420) = 12: fnt(421) = 0: fnt(422) = 0: fnt(423) = 0: fnt(424) = 0: fnt(425) = 12: fnt(426) = 12: fnt(427) = 0: fnt(428) = 0: fnt(429) = 0: fnt(430) = 0: fnt(431) = 0
fnt(432) = 0: fnt(433) = 4: fnt(434) = 8: fnt(435) = 12: fnt(436) = 12: fnt(437) = 0: fnt(438) = 0: fnt(439) = 0: fnt(440) = 0: fnt(441) = 12: fnt(442) = 12: fnt(443) = 0: fnt(444) = 0: fnt(445) = 0: fnt(446) = 0: fnt(447) = 0
fnt(448) = 0: fnt(449) = 0: fnt(450) = 0: fnt(451) = 32: fnt(452) = 16: fnt(453) = 8: fnt(454) = 4: fnt(455) = 2: fnt(456) = 1: fnt(457) = 2: fnt(458) = 4: fnt(459) = 8: fnt(460) = 16: fnt(461) = 32: fnt(462) = 0: fnt(463) = 0
fnt(464) = 0: fnt(465) = 0: fnt(466) = 0: fnt(467) = 0: fnt(468) = 0: fnt(469) = 0: fnt(470) = 62: fnt(471) = 0: fnt(472) = 0: fnt(473) = 0: fnt(474) = 62: fnt(475) = 0: fnt(476) = 0: fnt(477) = 0: fnt(478) = 0: fnt(479) = 0
fnt(480) = 0: fnt(481) = 0: fnt(482) = 0: fnt(483) = 1: fnt(484) = 2: fnt(485) = 4: fnt(486) = 8: fnt(487) = 16: fnt(488) = 32: fnt(489) = 16: fnt(490) = 8: fnt(491) = 4: fnt(492) = 2: fnt(493) = 1: fnt(494) = 0: fnt(495) = 0
fnt(496) = 0: fnt(497) = 0: fnt(498) = 12: fnt(499) = 12: fnt(500) = 0: fnt(501) = 0: fnt(502) = 4: fnt(503) = 4: fnt(504) = 8: fnt(505) = 16: fnt(506) = 32: fnt(507) = 33: fnt(508) = 33: fnt(509) = 18: fnt(510) = 12: fnt(511) = 0
fnt(512) = 0: fnt(513) = 0: fnt(514) = 60: fnt(515) = 66: fnt(516) = 1: fnt(517) = 57: fnt(518) = 85: fnt(519) = 85: fnt(520) = 85: fnt(521) = 85: fnt(522) = 85: fnt(523) = 89: fnt(524) = 65: fnt(525) = 34: fnt(526) = 28: fnt(527) = 0
fnt(528) = 0: fnt(529) = 0: fnt(530) = 65: fnt(531) = 65: fnt(532) = 65: fnt(533) = 62: fnt(534) = 34: fnt(535) = 34: fnt(536) = 34: fnt(537) = 20: fnt(538) = 20: fnt(539) = 20: fnt(540) = 20: fnt(541) = 8: fnt(542) = 8: fnt(543) = 0
fnt(544) = 0: fnt(545) = 0: fnt(546) = 31: fnt(547) = 33: fnt(548) = 65: fnt(549) = 65: fnt(550) = 65: fnt(551) = 33: fnt(552) = 31: fnt(553) = 33: fnt(554) = 65: fnt(555) = 65: fnt(556) = 65: fnt(557) = 33: fnt(558) = 31: fnt(559) = 0
fnt(560) = 0: fnt(561) = 0: fnt(562) = 28: fnt(563) = 34: fnt(564) = 65: fnt(565) = 65: fnt(566) = 1: fnt(567) = 1: fnt(568) = 1: fnt(569) = 1: fnt(570) = 1: fnt(571) = 65: fnt(572) = 65: fnt(573) = 34: fnt(574) = 28: fnt(575) = 0
fnt(576) = 0: fnt(577) = 0: fnt(578) = 31: fnt(579) = 33: fnt(580) = 65: fnt(581) = 65: fnt(582) = 65: fnt(583) = 65: fnt(584) = 65: fnt(585) = 65: fnt(586) = 65: fnt(587) = 65: fnt(588) = 65: fnt(589) = 33: fnt(590) = 31: fnt(591) = 0
fnt(592) = 0: fnt(593) = 0: fnt(594) = 127: fnt(595) = 1: fnt(596) = 1: fnt(597) = 1: fnt(598) = 1: fnt(599) = 1: fnt(600) = 63: fnt(601) = 1: fnt(602) = 1: fnt(603) = 1: fnt(604) = 1: fnt(605) = 1: fnt(606) = 127: fnt(607) = 0
fnt(608) = 0: fnt(609) = 0: fnt(610) = 1: fnt(611) = 1: fnt(612) = 1: fnt(613) = 1: fnt(614) = 1: fnt(615) = 1: fnt(616) = 63: fnt(617) = 1: fnt(618) = 1: fnt(619) = 1: fnt(620) = 1: fnt(621) = 1: fnt(622) = 127: fnt(623) = 0
fnt(624) = 0: fnt(625) = 0: fnt(626) = 92: fnt(627) = 98: fnt(628) = 65: fnt(629) = 65: fnt(630) = 65: fnt(631) = 113: fnt(632) = 1: fnt(633) = 1: fnt(634) = 1: fnt(635) = 65: fnt(636) = 65: fnt(637) = 34: fnt(638) = 28: fnt(639) = 0
fnt(640) = 0: fnt(641) = 0: fnt(642) = 65: fnt(643) = 65: fnt(644) = 65: fnt(645) = 65: fnt(646) = 65: fnt(647) = 65: fnt(648) = 127: fnt(649) = 65: fnt(650) = 65: fnt(651) = 65: fnt(652) = 65: fnt(653) = 65: fnt(654) = 65: fnt(655) = 0
fnt(656) = 0: fnt(657) = 0: fnt(658) = 28: fnt(659) = 8: fnt(660) = 8: fnt(661) = 8: fnt(662) = 8: fnt(663) = 8: fnt(664) = 8: fnt(665) = 8: fnt(666) = 8: fnt(667) = 8: fnt(668) = 8: fnt(669) = 8: fnt(670) = 28: fnt(671) = 0
fnt(672) = 0: fnt(673) = 0: fnt(674) = 12: fnt(675) = 18: fnt(676) = 33: fnt(677) = 33: fnt(678) = 32: fnt(679) = 32: fnt(680) = 32: fnt(681) = 32: fnt(682) = 32: fnt(683) = 32: fnt(684) = 32: fnt(685) = 32: fnt(686) = 32: fnt(687) = 0
fnt(688) = 0: fnt(689) = 0: fnt(690) = 65: fnt(691) = 65: fnt(692) = 33: fnt(693) = 17: fnt(694) = 17: fnt(695) = 11: fnt(696) = 5: fnt(697) = 9: fnt(698) = 9: fnt(699) = 17: fnt(700) = 33: fnt(701) = 33: fnt(702) = 65: fnt(703) = 0
fnt(704) = 0: fnt(705) = 0: fnt(706) = 127: fnt(707) = 1: fnt(708) = 1: fnt(709) = 1: fnt(710) = 1: fnt(711) = 1: fnt(712) = 1: fnt(713) = 1: fnt(714) = 1: fnt(715) = 1: fnt(716) = 1: fnt(717) = 1: fnt(718) = 1: fnt(719) = 0
fnt(720) = 0: fnt(721) = 0: fnt(722) = 73: fnt(723) = 73: fnt(724) = 73: fnt(725) = 85: fnt(726) = 85: fnt(727) = 85: fnt(728) = 85: fnt(729) = 99: fnt(730) = 99: fnt(731) = 99: fnt(732) = 99: fnt(733) = 65: fnt(734) = 65: fnt(735) = 0
fnt(736) = 0: fnt(737) = 0: fnt(738) = 65: fnt(739) = 97: fnt(740) = 97: fnt(741) = 81: fnt(742) = 81: fnt(743) = 73: fnt(744) = 73: fnt(745) = 69: fnt(746) = 69: fnt(747) = 67: fnt(748) = 67: fnt(749) = 65: fnt(750) = 65: fnt(751) = 0
fnt(752) = 0: fnt(753) = 0: fnt(754) = 28: fnt(755) = 34: fnt(756) = 65: fnt(757) = 65: fnt(758) = 65: fnt(759) = 65: fnt(760) = 65: fnt(761) = 65: fnt(762) = 65: fnt(763) = 65: fnt(764) = 65: fnt(765) = 34: fnt(766) = 28: fnt(767) = 0
fnt(768) = 0: fnt(769) = 0: fnt(770) = 1: fnt(771) = 1: fnt(772) = 1: fnt(773) = 1: fnt(774) = 1: fnt(775) = 1: fnt(776) = 31: fnt(777) = 33: fnt(778) = 65: fnt(779) = 65: fnt(780) = 65: fnt(781) = 33: fnt(782) = 31: fnt(783) = 0
fnt(784) = 0: fnt(785) = 0: fnt(786) = 92: fnt(787) = 34: fnt(788) = 81: fnt(789) = 73: fnt(790) = 65: fnt(791) = 65: fnt(792) = 65: fnt(793) = 65: fnt(794) = 65: fnt(795) = 65: fnt(796) = 65: fnt(797) = 34: fnt(798) = 28: fnt(799) = 0
fnt(800) = 0: fnt(801) = 0: fnt(802) = 65: fnt(803) = 65: fnt(804) = 33: fnt(805) = 33: fnt(806) = 17: fnt(807) = 17: fnt(808) = 31: fnt(809) = 33: fnt(810) = 65: fnt(811) = 65: fnt(812) = 65: fnt(813) = 33: fnt(814) = 31: fnt(815) = 0
fnt(816) = 0: fnt(817) = 0: fnt(818) = 28: fnt(819) = 34: fnt(820) = 65: fnt(821) = 65: fnt(822) = 64: fnt(823) = 32: fnt(824) = 24: fnt(825) = 6: fnt(826) = 1: fnt(827) = 65: fnt(828) = 65: fnt(829) = 34: fnt(830) = 28: fnt(831) = 0
fnt(832) = 0: fnt(833) = 0: fnt(834) = 8: fnt(835) = 8: fnt(836) = 8: fnt(837) = 8: fnt(838) = 8: fnt(839) = 8: fnt(840) = 8: fnt(841) = 8: fnt(842) = 8: fnt(843) = 8: fnt(844) = 8: fnt(845) = 8: fnt(846) = 127: fnt(847) = 0
fnt(848) = 0: fnt(849) = 0: fnt(850) = 28: fnt(851) = 34: fnt(852) = 65: fnt(853) = 65: fnt(854) = 65: fnt(855) = 65: fnt(856) = 65: fnt(857) = 65: fnt(858) = 65: fnt(859) = 65: fnt(860) = 65: fnt(861) = 65: fnt(862) = 65: fnt(863) = 0
fnt(864) = 0: fnt(865) = 0: fnt(866) = 8: fnt(867) = 8: fnt(868) = 8: fnt(869) = 20: fnt(870) = 20: fnt(871) = 20: fnt(872) = 34: fnt(873) = 34: fnt(874) = 34: fnt(875) = 34: fnt(876) = 65: fnt(877) = 65: fnt(878) = 65: fnt(879) = 0
fnt(880) = 0: fnt(881) = 0: fnt(882) = 34: fnt(883) = 34: fnt(884) = 34: fnt(885) = 34: fnt(886) = 34: fnt(887) = 85: fnt(888) = 85: fnt(889) = 85: fnt(890) = 85: fnt(891) = 73: fnt(892) = 73: fnt(893) = 73: fnt(894) = 73: fnt(895) = 0
fnt(896) = 0: fnt(897) = 0: fnt(898) = 65: fnt(899) = 65: fnt(900) = 34: fnt(901) = 34: fnt(902) = 20: fnt(903) = 20: fnt(904) = 8: fnt(905) = 20: fnt(906) = 20: fnt(907) = 34: fnt(908) = 34: fnt(909) = 65: fnt(910) = 65: fnt(911) = 0
fnt(912) = 0: fnt(913) = 0: fnt(914) = 8: fnt(915) = 8: fnt(916) = 8: fnt(917) = 8: fnt(918) = 8: fnt(919) = 8: fnt(920) = 8: fnt(921) = 20: fnt(922) = 20: fnt(923) = 34: fnt(924) = 34: fnt(925) = 65: fnt(926) = 65: fnt(927) = 0
fnt(928) = 0: fnt(929) = 0: fnt(930) = 127: fnt(931) = 1: fnt(932) = 2: fnt(933) = 2: fnt(934) = 4: fnt(935) = 4: fnt(936) = 8: fnt(937) = 16: fnt(938) = 16: fnt(939) = 32: fnt(940) = 32: fnt(941) = 64: fnt(942) = 127: fnt(943) = 0
fnt(944) = 0: fnt(945) = 62: fnt(946) = 2: fnt(947) = 2: fnt(948) = 2: fnt(949) = 2: fnt(950) = 2: fnt(951) = 2: fnt(952) = 2: fnt(953) = 2: fnt(954) = 2: fnt(955) = 2: fnt(956) = 2: fnt(957) = 2: fnt(958) = 2: fnt(959) = 62
fnt(960) = 0: fnt(961) = 0: fnt(962) = 8: fnt(963) = 8: fnt(964) = 8: fnt(965) = 62: fnt(966) = 8: fnt(967) = 8: fnt(968) = 62: fnt(969) = 20: fnt(970) = 20: fnt(971) = 34: fnt(972) = 34: fnt(973) = 65: fnt(974) = 65: fnt(975) = 0
fnt(976) = 0: fnt(977) = 62: fnt(978) = 32: fnt(979) = 32: fnt(980) = 32: fnt(981) = 32: fnt(982) = 32: fnt(983) = 32: fnt(984) = 32: fnt(985) = 32: fnt(986) = 32: fnt(987) = 32: fnt(988) = 32: fnt(989) = 32: fnt(990) = 32: fnt(991) = 62
fnt(992) = 0: fnt(993) = 0: fnt(994) = 0: fnt(995) = 0: fnt(996) = 0: fnt(997) = 0: fnt(998) = 0: fnt(999) = 0: fnt(1000) = 0: fnt(1001) = 0: fnt(1002) = 0: fnt(1003) = 0: fnt(1004) = 0: fnt(1005) = 34: fnt(1006) = 20: fnt(1007) = 8
fnt(1008) = 255: fnt(1009) = 0: fnt(1010) = 0: fnt(1011) = 0: fnt(1012) = 0: fnt(1013) = 0: fnt(1014) = 0: fnt(1015) = 0: fnt(1016) = 0: fnt(1017) = 0: fnt(1018) = 0: fnt(1019) = 0: fnt(1020) = 0: fnt(1021) = 0: fnt(1022) = 0: fnt(1023) = 0
fnt(1024) = 0: fnt(1025) = 0: fnt(1026) = 0: fnt(1027) = 0: fnt(1028) = 0: fnt(1029) = 0: fnt(1030) = 0: fnt(1031) = 0: fnt(1032) = 0: fnt(1033) = 0: fnt(1034) = 0: fnt(1035) = 0: fnt(1036) = 0: fnt(1037) = 16: fnt(1038) = 8: fnt(1039) = 4
fnt(1040) = 0: fnt(1041) = 0: fnt(1042) = 110: fnt(1043) = 49: fnt(1044) = 33: fnt(1045) = 34: fnt(1046) = 60: fnt(1047) = 32: fnt(1048) = 33: fnt(1049) = 30: fnt(1050) = 0: fnt(1051) = 0: fnt(1052) = 0: fnt(1053) = 0: fnt(1054) = 0: fnt(1055) = 0
fnt(1056) = 0: fnt(1057) = 0: fnt(1058) = 29: fnt(1059) = 35: fnt(1060) = 65: fnt(1061) = 65: fnt(1062) = 65: fnt(1063) = 65: fnt(1064) = 35: fnt(1065) = 29: fnt(1066) = 1: fnt(1067) = 1: fnt(1068) = 1: fnt(1069) = 1: fnt(1070) = 1: fnt(1071) = 0
fnt(1072) = 0: fnt(1073) = 0: fnt(1074) = 60: fnt(1075) = 66: fnt(1076) = 1: fnt(1077) = 1: fnt(1078) = 1: fnt(1079) = 1: fnt(1080) = 66: fnt(1081) = 60: fnt(1082) = 0: fnt(1083) = 0: fnt(1084) = 0: fnt(1085) = 0: fnt(1086) = 0: fnt(1087) = 0
fnt(1088) = 0: fnt(1089) = 0: fnt(1090) = 92: fnt(1091) = 98: fnt(1092) = 65: fnt(1093) = 65: fnt(1094) = 65: fnt(1095) = 65: fnt(1096) = 98: fnt(1097) = 92: fnt(1098) = 64: fnt(1099) = 64: fnt(1100) = 64: fnt(1101) = 64: fnt(1102) = 64: fnt(1103) = 0
fnt(1104) = 0: fnt(1105) = 0: fnt(1106) = 60: fnt(1107) = 66: fnt(1108) = 1: fnt(1109) = 1: fnt(1110) = 127: fnt(1111) = 65: fnt(1112) = 34: fnt(1113) = 28: fnt(1114) = 0: fnt(1115) = 0: fnt(1116) = 0: fnt(1117) = 0: fnt(1118) = 0: fnt(1119) = 0
fnt(1120) = 0: fnt(1121) = 0: fnt(1122) = 4: fnt(1123) = 4: fnt(1124) = 4: fnt(1125) = 4: fnt(1126) = 4: fnt(1127) = 4: fnt(1128) = 4: fnt(1129) = 31: fnt(1130) = 4: fnt(1131) = 4: fnt(1132) = 4: fnt(1133) = 4: fnt(1134) = 24: fnt(1135) = 0
fnt(1136) = 0: fnt(1137) = 62: fnt(1138) = 65: fnt(1139) = 65: fnt(1140) = 62: fnt(1141) = 2: fnt(1142) = 28: fnt(1143) = 34: fnt(1144) = 34: fnt(1145) = 92: fnt(1146) = 0: fnt(1147) = 0: fnt(1148) = 0: fnt(1149) = 0: fnt(1150) = 0: fnt(1151) = 0
fnt(1152) = 0: fnt(1153) = 0: fnt(1154) = 65: fnt(1155) = 65: fnt(1156) = 65: fnt(1157) = 65: fnt(1158) = 65: fnt(1159) = 65: fnt(1160) = 35: fnt(1161) = 29: fnt(1162) = 1: fnt(1163) = 1: fnt(1164) = 1: fnt(1165) = 1: fnt(1166) = 1: fnt(1167) = 0
fnt(1168) = 0: fnt(1169) = 0: fnt(1170) = 8: fnt(1171) = 8: fnt(1172) = 8: fnt(1173) = 8: fnt(1174) = 8: fnt(1175) = 8: fnt(1176) = 8: fnt(1177) = 8: fnt(1178) = 0: fnt(1179) = 0: fnt(1180) = 8: fnt(1181) = 8: fnt(1182) = 0: fnt(1183) = 0
fnt(1184) = 0: fnt(1185) = 6: fnt(1186) = 8: fnt(1187) = 8: fnt(1188) = 8: fnt(1189) = 8: fnt(1190) = 8: fnt(1191) = 8: fnt(1192) = 8: fnt(1193) = 8: fnt(1194) = 0: fnt(1195) = 0: fnt(1196) = 8: fnt(1197) = 8: fnt(1198) = 0: fnt(1199) = 0
fnt(1200) = 0: fnt(1201) = 0: fnt(1202) = 65: fnt(1203) = 33: fnt(1204) = 17: fnt(1205) = 11: fnt(1206) = 5: fnt(1207) = 9: fnt(1208) = 17: fnt(1209) = 33: fnt(1210) = 1: fnt(1211) = 1: fnt(1212) = 1: fnt(1213) = 1: fnt(1214) = 1: fnt(1215) = 0
fnt(1216) = 0: fnt(1217) = 0: fnt(1218) = 8: fnt(1219) = 8: fnt(1220) = 8: fnt(1221) = 8: fnt(1222) = 8: fnt(1223) = 8: fnt(1224) = 8: fnt(1225) = 8: fnt(1226) = 8: fnt(1227) = 8: fnt(1228) = 8: fnt(1229) = 8: fnt(1230) = 8: fnt(1231) = 0
fnt(1232) = 0: fnt(1233) = 0: fnt(1234) = 73: fnt(1235) = 73: fnt(1236) = 73: fnt(1237) = 73: fnt(1238) = 73: fnt(1239) = 73: fnt(1240) = 75: fnt(1241) = 53: fnt(1242) = 0: fnt(1243) = 0: fnt(1244) = 0: fnt(1245) = 0: fnt(1246) = 0: fnt(1247) = 0
fnt(1248) = 0: fnt(1249) = 0: fnt(1250) = 65: fnt(1251) = 65: fnt(1252) = 65: fnt(1253) = 65: fnt(1254) = 65: fnt(1255) = 65: fnt(1256) = 35: fnt(1257) = 29: fnt(1258) = 0: fnt(1259) = 0: fnt(1260) = 0: fnt(1261) = 0: fnt(1262) = 0: fnt(1263) = 0
fnt(1264) = 0: fnt(1265) = 0: fnt(1266) = 28: fnt(1267) = 34: fnt(1268) = 65: fnt(1269) = 65: fnt(1270) = 65: fnt(1271) = 65: fnt(1272) = 34: fnt(1273) = 28: fnt(1274) = 0: fnt(1275) = 0: fnt(1276) = 0: fnt(1277) = 0: fnt(1278) = 0: fnt(1279) = 0
fnt(1280) = 0: fnt(1281) = 1: fnt(1282) = 1: fnt(1283) = 29: fnt(1284) = 35: fnt(1285) = 65: fnt(1286) = 65: fnt(1287) = 65: fnt(1288) = 35: fnt(1289) = 29: fnt(1290) = 0: fnt(1291) = 0: fnt(1292) = 0: fnt(1293) = 0: fnt(1294) = 0: fnt(1295) = 0
fnt(1296) = 0: fnt(1297) = 64: fnt(1298) = 64: fnt(1299) = 92: fnt(1300) = 98: fnt(1301) = 65: fnt(1302) = 65: fnt(1303) = 65: fnt(1304) = 98: fnt(1305) = 92: fnt(1306) = 0: fnt(1307) = 0: fnt(1308) = 0: fnt(1309) = 0: fnt(1310) = 0: fnt(1311) = 0
fnt(1312) = 0: fnt(1313) = 0: fnt(1314) = 4: fnt(1315) = 4: fnt(1316) = 4: fnt(1317) = 4: fnt(1318) = 4: fnt(1319) = 4: fnt(1320) = 12: fnt(1321) = 116: fnt(1322) = 0: fnt(1323) = 0: fnt(1324) = 0: fnt(1325) = 0: fnt(1326) = 0: fnt(1327) = 0
fnt(1328) = 0: fnt(1329) = 0: fnt(1330) = 62: fnt(1331) = 65: fnt(1332) = 64: fnt(1333) = 56: fnt(1334) = 6: fnt(1335) = 1: fnt(1336) = 65: fnt(1337) = 62: fnt(1338) = 0: fnt(1339) = 0: fnt(1340) = 0: fnt(1341) = 0: fnt(1342) = 0: fnt(1343) = 0
fnt(1344) = 0: fnt(1345) = 0: fnt(1346) = 24: fnt(1347) = 4: fnt(1348) = 4: fnt(1349) = 4: fnt(1350) = 4: fnt(1351) = 4: fnt(1352) = 4: fnt(1353) = 31: fnt(1354) = 4: fnt(1355) = 4: fnt(1356) = 4: fnt(1357) = 4: fnt(1358) = 0: fnt(1359) = 0
fnt(1360) = 0: fnt(1361) = 0: fnt(1362) = 92: fnt(1363) = 98: fnt(1364) = 65: fnt(1365) = 65: fnt(1366) = 65: fnt(1367) = 65: fnt(1368) = 65: fnt(1369) = 65: fnt(1370) = 0: fnt(1371) = 0: fnt(1372) = 0: fnt(1373) = 0: fnt(1374) = 0: fnt(1375) = 0
fnt(1376) = 0: fnt(1377) = 0: fnt(1378) = 8: fnt(1379) = 8: fnt(1380) = 20: fnt(1381) = 20: fnt(1382) = 34: fnt(1383) = 34: fnt(1384) = 65: fnt(1385) = 65: fnt(1386) = 0: fnt(1387) = 0: fnt(1388) = 0: fnt(1389) = 0: fnt(1390) = 0: fnt(1391) = 0
fnt(1392) = 0: fnt(1393) = 0: fnt(1394) = 34: fnt(1395) = 34: fnt(1396) = 34: fnt(1397) = 85: fnt(1398) = 85: fnt(1399) = 73: fnt(1400) = 73: fnt(1401) = 73: fnt(1402) = 0: fnt(1403) = 0: fnt(1404) = 0: fnt(1405) = 0: fnt(1406) = 0: fnt(1407) = 0
fnt(1408) = 0: fnt(1409) = 0: fnt(1410) = 65: fnt(1411) = 34: fnt(1412) = 20: fnt(1413) = 8: fnt(1414) = 8: fnt(1415) = 20: fnt(1416) = 34: fnt(1417) = 65: fnt(1418) = 0: fnt(1419) = 0: fnt(1420) = 0: fnt(1421) = 0: fnt(1422) = 0: fnt(1423) = 0
fnt(1424) = 0: fnt(1425) = 3: fnt(1426) = 4: fnt(1427) = 8: fnt(1428) = 20: fnt(1429) = 20: fnt(1430) = 34: fnt(1431) = 34: fnt(1432) = 65: fnt(1433) = 65: fnt(1434) = 0: fnt(1435) = 0: fnt(1436) = 0: fnt(1437) = 0: fnt(1438) = 0: fnt(1439) = 0
fnt(1440) = 0: fnt(1441) = 0: fnt(1442) = 127: fnt(1443) = 1: fnt(1444) = 2: fnt(1445) = 4: fnt(1446) = 8: fnt(1447) = 16: fnt(1448) = 32: fnt(1449) = 127: fnt(1450) = 0: fnt(1451) = 0: fnt(1452) = 0: fnt(1453) = 0: fnt(1454) = 0: fnt(1455) = 0
fnt(1456) = 0: fnt(1457) = 56: fnt(1458) = 8: fnt(1459) = 8: fnt(1460) = 8: fnt(1461) = 8: fnt(1462) = 8: fnt(1463) = 8: fnt(1464) = 4: fnt(1465) = 8: fnt(1466) = 8: fnt(1467) = 8: fnt(1468) = 8: fnt(1469) = 8: fnt(1470) = 8: fnt(1471) = 56
fnt(1472) = 8: fnt(1473) = 8: fnt(1474) = 8: fnt(1475) = 8: fnt(1476) = 8: fnt(1477) = 8: fnt(1478) = 8: fnt(1479) = 8: fnt(1480) = 8: fnt(1481) = 8: fnt(1482) = 8: fnt(1483) = 8: fnt(1484) = 8: fnt(1485) = 8: fnt(1486) = 8: fnt(1487) = 8
fnt(1488) = 0: fnt(1489) = 14: fnt(1490) = 8: fnt(1491) = 8: fnt(1492) = 8: fnt(1493) = 8: fnt(1494) = 8: fnt(1495) = 8: fnt(1496) = 16: fnt(1497) = 8: fnt(1498) = 8: fnt(1499) = 8: fnt(1500) = 8: fnt(1501) = 8: fnt(1502) = 8: fnt(1503) = 14
fnt(1504) = 0: fnt(1505) = 0: fnt(1506) = 0: fnt(1507) = 0: fnt(1508) = 0: fnt(1509) = 0: fnt(1510) = 0: fnt(1511) = 0: fnt(1512) = 0: fnt(1513) = 0: fnt(1514) = 0: fnt(1515) = 0: fnt(1516) = 0: fnt(1517) = 0: fnt(1518) = 25: fnt(1519) = 38
fnt(1520) = 0: fnt(1521) = 0: fnt(1522) = 0: fnt(1523) = 0: fnt(1524) = 0: fnt(1525) = 0: fnt(1526) = 0: fnt(1527) = 0: fnt(1528) = 0: fnt(1529) = 0: fnt(1530) = 0: fnt(1531) = 0: fnt(1532) = 0: fnt(1533) = 0: fnt(1534) = 0: fnt(1535) = 0
End Sub
0 件のコメント:
コメントを投稿