Private Sub ComMozaic_Click() 'コマンドボタンComMozaicを配置する.
Dim Xgrid As Integer, Ygrid As Integer, X As Integer, Y As
Integer, m As Integer, n As Integer, Size As Integer
Dim sumR As Long, sumG As Long, sumB As Long
Dim mozaicR As Integer, mozaicG As Integer, mozaicB As Integer
Size = 10 'モザイクを行うピクセルサイズ
'モザイクの格子数計算
Xgrid = Picture1.ScaleWidth \ Size '\は整数除算
Ygrid = Picture1.ScaleHeight \ Size
For X = 0 To Xgrid - 1 '半端になるピクセルは除外
For Y = 0 To Ygrid - 1
sumR = 0: sumG = 0: sumB = 0
For m = X * Size To X * Size + Size - 1
For n = Y * Size To Y * Size + Size - 1
sumR = getR(Picture1.Point(m, n)) + sumR
sumG = getG(Picture1.Point(m, n)) + sumG
sumB = getB(Picture1.Point(m, n)) + sumB
Next
Next
mozaicR = sumR / Size / Size
mozaicG = sumG / Size / Size
mozaicB = sumB / Size / Size
For m = X * Size To X * Size + Size - 1
For n = Y * Size To Y * Size + Size - 1
Picture1.PSet (m, n), RGB(mozaicR, mozaicG, mozaicB)
Next
Next
Next
Next
End Sub
Public Function getR(color As Long) 'Longの整数からR成分を抜き出す関数を設定
getR = color And &HFF
End Function
Public Function getG(color As Long) 'Longの整数からG成分を抜き出す関数を設定
getG = (color And &HFF00&) / &H100&
End Function
Public Function getB(color As Long) 'Longの整数からB成分を抜き出す関数
getB = (color And &HFF0000) / &H10000
End Function
1)PicOrg1とPicOrg2の画像を読み込む.
2)R,G,Bそれぞれについて,設定した比率で2枚の画像のピクセルの値を合成し,それを
(それぞれの比率の和が1になるようにする.)
例えば,
Rの合成値=PicOrg1のRの値*.5+PicOrg2のRの値
とする.
RGBそれぞれについて計算した後に,その値をPicOutにPsetすればよい.
画像の計算値=(マスクのR値/255)*PicOrg2+(1-マスクのR値/255)*PicOrg1
これをRGBそれぞれの成分について行い,その計算値をPicOutに出力する.
プログラムの強制的な中止には...Breakキーを押す(Fn+Breakなど,機種によって異なる)