モノクロのプログラムを参考に8×8の枡目でモザイク加工するプログラムを作成する
先生に見せて動作確認ができればよい。
描画はSetPixel関数を使い、アルゴリズムの解説付きでレポート提出
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim bm As Bitmap
Dim g As Graphics
Dim gpath As Drawing2D.GraphicsPath = New Drawing2D.GraphicsPath
bm = New Bitmap(600, 600)
g = Graphics.FromImage(bm)
gpath.AddRectangle(New Rectangle(0, 0, 599, 599))
g.FillPath(Brushes.White, gpath)
PictureBox1.Image = bm
End Sub
Private Sub Line(ByVal x0 As Integer, ByVal y0 As Integer, ByVal xn As Integer, ByVal yn As Integer)
Dim bm As Bitmap
bm = PictureBox1.Image
'
' ここにプログラム
'
PictureBox1.Image = bm
End Sub
Step1 y方向増分を実数で表す。
描画の条件:(xn-x0) > (yn-y0) の範囲で行う。
例)Line(300, 300, 500, 400)
dy=(yn-y0)/(xn-x0)
y=y0
for x = x0 to xn
点を描く(x,y)
y= y+dy
next
Step2 整数で処理する
増分を整数に置き換えて速度アップする。
解き方:マスの1辺をxn-x0と考えると、1マスにおけるy方向の増分がyn-y0と考えられます。
dx=xn-x0,dy=yn-y0とおくと、
始点のときey=-dx/2とし、1マス進むごとにey=ey+dyとし、
eyがdxを超えたとき、y=y+1,ey=ey-dxとする。
このyを使って点を描いていきます。
Step3 第2事象の場合を追加する。Line(300, 300, 400, 500)の場合を考える
if文でdxとdyを比較してy方向をベースにしたプログラムを追加する