ぼかしのエフェクト
ここに載せてあるソースコードは、参考のために載せてあります
サンプルコードは、一番下にLZHとしてあります
Option Explicit Private Sub Command1_Click() Dim Cpic As New Speeding Dim jx As Single, jy As Single Dim picw As Single, pich As Single Dim dstHdc As Long, srcHdc As Long Dim k As Integer, kColor As Long Dim kR As Integer, kG As Integer, kB As Integer Dim Ang(3) As POINT_t '処理中を示すための処理をします Command1.Enabled = False Me.MousePointer = vbHourglass '4方向を決めます Ang(0).x = 1 Ang(1).y = 1 Ang(2).x = -1 Ang(3).y = -1 'hDCを作成して、代入します Cpic.Starting Picture2, Picture1 dstHdc = Cpic.GetDstHDC srcHdc = Cpic.GetSrcHDC 'サイズを代入します picw = Picture1.ScaleWidth pich = Picture1.ScaleHeight 'ぼかし処理をします For jy = 0 To pich '処理に長さに応じてDoeventsを使ってください DoEvents For jx = 0 To picw '4方向(まわり)の色を取得してRGB値を 'それぞれインクリメントしていきます For k = 0 To 3 kColor = GetPixel(srcHdc, jx + Ang(k).x, jy + Ang(k).y) kR = kR + IndexRGB(kColor, 0) kG = kG + IndexRGB(kColor, 1) kB = kB + IndexRGB(kColor, 2) Next '平均を計算します kR = Abs(kR \ 4) kG = Abs(kG \ 4) kB = Abs(kB \ 4) 'ピクセルを打ちます SetPixel dstHdc, jx, jy, RGB(kR, kG, kB) '初期化します kR = 0: kG = 0: kB = 0 Next jx, jy 'ぼかしのかかった拡大図を表示します StretchBlt Picture4.hdc, 0, 0 _ , Picture4.ScaleWidth, Picture4.ScaleHeight _ , Cpic.GetDstHDC _ , 45, 80, 20, 20, vbSrcCopy Picture4.Refresh '処理が終了したことを示します Command1.Enabled = True Me.MousePointer = vbDefault End Sub Private Sub Form_Load() '元の画像の拡大図を表示します StretchBlt Picture3.hdc, 0, 0 _ , Picture3.ScaleWidth, Picture3.ScaleHeight _ , Picture1.hdc _ , 45, 80, 20, 20, vbSrcCopy Picture3.Refresh End Sub |