Brightness and Contrast

  • Brightness

dapat dilakukan dengan cara meningkatkan atau menurunkan nilai piksel dari seluruh bagian dalam citra tersebut. Untuk melakukan hal ini digunakan formula seperti terdapat di bawah ini.

Ko= Ki+ C

Dimana Ko adalah nilai piksel output, Ki adalah nilai piksel input dan adalah konstanta yang bernilai positif atau negatif.

Untuk citra berwarna yang mempunyai format warna RGB (red, green, blue), modifikasibrightness dilakukan terhadap setiap elemen warna yang masing-masing nilainya dapat berbeda dengan yang lain. Misalnya citra akan dibuat lebih merah, maka nilai merah pada setiap titik ditambah dengan nilai tertentu. Sebaliknya, jika warna biru citra akan dikurangi, maka nilai elemen biru setiap titik dikurangi.

  • Contrast

Jika nilai-nilai warna piksel dalam sebuah citra terdiri atas nilai-nilai dengan rentang yang tidak terlalu berbeda secara keseluruhan, maka citra tersebut akan kelihatan kurang kontras. Hal ini disebabkan citra tersebut memiliki kurva histogram yang sempit dengan tepi kiri dan tepi kanan yang berdekatan, sehingga titik tergelap dalam citra tersebut tidak mencapai hitam pekat dan titik paling terang dalam citra itu tidak berwarna putih cemerlang [2]. Peningkatan kontras dapat dilakukan dengan bermacam-macam fungsi. Salah satu fungsi yang dapat digunakan adalah seperti terdapat di bawah ini.

Jika Ki > 127 lalu Ko = Ki + P else Ko = Ki – P

Dimana Ko adalah nilai piksel output, Ki adalah nilai piksel input dan adalah konstanta pengaturan kontras.

Ok. mari kita coba untuk membuat aplikasi Brightness dan Contrast gambar dengan menggunakan Visual Basic 6.0.
untuk membuat aplikasinya, ikutilah langkah langkah dibawah ini !
  1. buatlah form baru
  2. pada form tambahkan 2 buah Command Botton, 2 buah Picture Box, dan sebuah HScrollBar.
  3. tambahkan sebuah modul.
  4. copy code di bawah ini ke dalam modul.
Type SHELLEXECUTEINFO
    cbSize As Long
    fMask As Long
    hwnd As Long
    lpVerb As String
    lpFile As String
    lpParameters As String
    lpDirectory As String
    nShow As Long
    hInstApp As Long
    lpIDList As Long
    lpClass As String
    hkeyClass As Long
    dwHotKey As Long
    hIcon As Long
    hProcess As Long
End Type

Public Const SEE_MASK_INVOKEIDLIST = &HC
Public Const SEE_MASK_NOCLOSEPROCESS = &H40
Public Const SEE_MASK_FLAG_NO_UI = &H400

Declare Function ShellExecuteEX Lib "shell32.dll" Alias _
"ShellExecuteEx" (SEI As SHELLEXECUTEINFO) As Long

Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Public Declare Function SetPixelV Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long

Public Type Pixel
    blue As Integer
    green As Integer
    red As Integer
    Trans As Integer
End Type

Public Function NewPixel(inRed As Integer, inGreen As Integer, inBlue As Integer) As Pixel
    With NewPixel
        .red = inRed
        .green = inGreen
        .blue = inBlue
    End With
End Function

Public Function PixToLong(inPix As Pixel) As Long
    With inPix
        PixToLong = RGB(.red, .green, .blue)
    End With
End Function

Public Function LongToPix(inCol As Long) As Pixel
    With LongToPix
        .red = inCol And &HFF
        .green = (inCol \ &H100) And &HFF
        .blue = (inCol \ &H10000) And &HFF
    End With
End Function

Public Function GreyscalePix(inVal As Integer) As Pixel

    GreyscalePix = NewPixel(inVal, inVal, inVal)
End Function

Public Function InvertPix(inPix As Pixel) As Pixel
    With InvertPix
        .red = Not inPix.red
        .green = Not inPix.green
        .blue = Not inPix.blue
    End With
End Function

Public Function SameCol(inPixA As Pixel, inPixB As Pixel) As Boolean

    SameCol = (inPixA.red = inPixB.red) And (inPixA.green = inPixB.green) And (inPixA.blue = inPixB.blue)
End Function

Public Function GetGreyPix(inPix As Pixel) As Integer

    GetGreyPix = ((inPix.red * 0.222) + (inPix.green * 0.707) + (inPix.blue * 0.071))
End Function

Public Function LightenPix(inCol As Pixel, inAmt As Integer) As Pixel

    LightenPix = NewPixel(CheckHighByte(inCol.red + inAmt), _
        CheckHighByte(inCol.green + inAmt), CheckHighByte(inCol.blue + inAmt))
End Function

Public Function DarkenPix(inCol As Pixel, inAmt As Integer) As Pixel

    DarkenPix = NewPixel(CheckLowByte(inCol.red - inAmt), _
        CheckLowByte(inCol.green - inAmt), CheckLowByte(inCol.blue - inAmt))
End Function

Public Function TransPix(PixA As Pixel, PixB As Pixel, inAmt As Single) As Pixel
    With TransPix
        .red = LinearB(PixA.red, PixB.red, inAmt)
        .green = LinearB(PixA.green, PixB.green, inAmt)
        .blue = LinearB(PixA.blue, PixB.blue, inAmt)
    End With
End Function

Public Function TransAddPix(inPixA As Pixel, inPixB As Pixel, inAmt As Single) As Pixel
    TransAddPix = TransPix(BlendAdd(inPixA, inPixB), inPixB, inAmt)
End Function

Public Function TransSubPix(inPixA As Pixel, inPixB As Pixel, inAmt As Single) As Pixel
    TransSubPix = TransPix(BlendSub(inPixA, inPixB), inPixB, inAmt)
End Function

Public Function TransLightPix(inPixA As Pixel, inPixB As Pixel, inAmt As Single) As Pixel
    TransLightPix = TransPix(BlendLight(inPixA, inPixB), inPixB, inAmt)
End Function

Public Function TransDarkPix(inPixA As Pixel, inPixB As Pixel, inAmt As Single) As Pixel
    TransDarkPix = TransPix(BlendDark(inPixA, inPixB), inPixB, inAmt)
End Function

Public Function TransDiffPix(inPixA As Pixel, inPixB As Pixel, inAmt As Single) As Pixel
    TransDiffPix = TransPix(BlendDiff(inPixA, inPixB), inPixB, inAmt)
End Function

Public Function TransScrnPix(inPixA As Pixel, inPixB As Pixel, inAmt As Single) As Pixel
    TransScrnPix = TransPix(BlendScrn(inPixA, inPixB), inPixB, inAmt)
End Function

Public Function TransExclPix(inPixA As Pixel, inPixB As Pixel, inAmt As Single) As Pixel
    TransExclPix = TransPix(BlendExcl(inPixA, inPixB), inPixB, inAmt)
End Function

Public Function BlendAdd(inPixA As Pixel, inPixB As Pixel) As Pixel
    With BlendAdd
        .red = CheckHighByte(inPixA.red + inPixB.red)
        .green = CheckHighByte(inPixA.green + inPixB.green)
        .blue = CheckHighByte(inPixA.blue + inPixB.blue)
    End With
End Function

Public Function BlendSub(inPixA As Pixel, inPixB As Pixel) As Pixel
    With BlendSub
        .red = CheckLowByte(inPixA.red - inPixB.red)
        .green = CheckLowByte(inPixA.green - inPixB.green)
        .blue = CheckLowByte(inPixA.blue - inPixB.blue)
    End With
End Function

Public Function BlendLight(inPixA As Pixel, inPixB As Pixel) As Pixel
    With BlendLight
        .red = MaxB(inPixA.red, inPixB.red)
        .green = MaxB(inPixA.green, inPixB.green)
        .blue = MaxB(inPixA.blue, inPixB.blue)
    End With
End Function

Public Function BlendDark(inPixA As Pixel, inPixB As Pixel) As Pixel
    With BlendDark
        .red = MinB(inPixA.red, inPixB.red)
        .green = MinB(inPixA.green, inPixB.green)
        .blue = MinB(inPixA.blue, inPixB.blue)
    End With
End Function

Public Function BlendDiff(inPixA As Pixel, inPixB As Pixel) As Pixel
    With BlendDiff
        .red = Abs(inPixA.red - inPixB.red)
        .green = Abs(inPixA.green - inPixB.green)
        .blue = Abs(inPixA.blue - inPixB.blue)
    End With
End Function

Public Function BlendScrn(inPixA As Pixel, inPixB As Pixel) As Pixel
    With BlendScrn
        .red = CheckHighByte(inPixA.red * (1 + (inPixB.red / 255)))
        .green = CheckHighByte(inPixA.green * (1 + (inPixB.green / 255)))
        .blue = CheckHighByte(inPixA.blue * (1 + (inPixB.blue / 255)))
    End With
End Function

Public Function BlendExcl(inPixA As Pixel, inPixB As Pixel) As Pixel
    With BlendExcl
        .red = LinearB(inPixA.red, Not inPixA.red, inPixB.red / 255)
        .green = LinearB(inPixA.green, Not inPixA.green, inPixB.green / 255)
        .blue = LinearB(inPixA.blue, Not inPixA.blue, inPixB.blue / 255)
    End With
End Function

Function LinearB(inValA As Integer, inValB As Integer, inPos As Single) As Integer

    LinearB = (inValA * (1 - inPos)) + (inValB * inPos)
End Function

Function CheckHighByte(inVal As Integer) As Integer

    CheckHighByte = IIf(inVal > 255, 255, inVal)
End Function

Function CheckLowByte(inVal As Integer) As Integer

    CheckLowByte = IIf(inVal < 0, 0, inVal)
End Function

Function CheckByte(inVal As Integer) As Integer

    If inVal < 0 Then CheckByte = 0 Else If inVal > 255 Then CheckByte = 255 Else CheckByte = inVal
End Function

Public Function MaxB(inValA As Integer, inValB As Integer) As Integer

    MaxB = IIf(inValA > inValB, inValA, inValB)
End Function

Public Function MinB(inValA As Integer, inValB As Integer) As Integer

    MinB = IIf(inValA < inValB, inValA, inValB)
End Function

Public Sub ShowProps(FileName As String, OwnerhWnd As Long)
    Dim SEI As SHELLEXECUTEINFO
    Dim r As Long
   With SEI
        .cbSize = Len(SEI)
        .fMask = SEE_MASK_NOCLOSEPROCESS Or _
         SEE_MASK_INVOKEIDLIST Or SEE_MASK_FLAG_NO_UI
        .hwnd = OwnerhWnd
        .lpVerb = "Properties"
        .lpFile = FileName
        .lpParameters = vbNullChar
        .lpDirectory = vbNullChar
        .nShow = 0
        .hInstApp = 0
        .lpIDList = 0
    End With

    r = ShellExecuteEX(SEI)
End Sub

Public Function Contrast(pix As Pixel, iAmnt As Integer) As Pixel

    If pix.red < 128 Then
        pix.red = CheckLowByte(pix.red + iAmnt)
    Else
        pix.red = CheckHighByte(pix.red - iAmnt)
    End If

    If pix.blue < 128 Then
        pix.blue = CheckLowByte(pix.blue + iAmnt)
    Else
        pix.blue = CheckHighByte(pix.blue - iAmnt)
    End If

    If pix.green < 128 Then
        pix.green = CheckLowByte(pix.green + iAmnt)
    Else
        pix.green = CheckHighByte(pix.green - iAmnt)
    End If

    Contrast = pix

End Function

Public Sub Bright(val As Integer, oPic As PictureBox)
On Error Resume Next

    Dim Brightness As Single
    Dim NewColor As Long
    Dim x, y As Integer
    Dim r, g, b As Integer

    Brightness = val '/ 100

    For x = 0 To oPic.ScaleWidth
        For y = 0 To oPic.ScaleHeight

            NewColor = GetPixel(oPic.hdc, x, y)

            r = (NewColor Mod 256)
            b = (Int(NewColor / 65536))
            g = ((NewColor - (b * 65536) - r) / 256)

            r = r + Brightness
            b = b + Brightness
            g = g + Brightness

            If r > 255 Then r = 255
            If r < 0 Then r = 0
            If b > 255 Then b = 255
            If b < 0 Then b = 0
            If g > 255 Then g = 255
            If g < 0 Then g = 0

            SetPixelV oPic.hdc, x, y, RGB(r, g, b)

        Next y

    If x Mod 10 = 0 Then oPic.Refresh
    Next x

    oPic.Refresh
End Sub

   5. copy code di bawah ini pada Command1_click
Private Sub Command1_Click()
    Dim x As Long
    Dim y As Long
    Dim r As Integer
    Dim g As Integer
    Dim b As Integer
    Dim pix As Pixel

    Picture1.Cls

    Screen.MousePointer = vbHourglass

    For x = 0 To Picture2.ScaleWidth
        For y = 0 To Picture2.ScaleHeight
            pix = LongToPix(Picture2.Point(x, y))
            pix = Contrast(pix, -(HScroll1.Value) / 5)
            Picture1.PSet (x, y), PixToLong(pix)
        Next y
    Next x

    Screen.MousePointer = vbDefault

    Picture2.Picture = Picture2.Image

End Sub

    6. copy code di bawah ini pada Command2_click
 
Private Sub Command2_Click()
    Picture1.Picture = Picture2.Picture
    Bright HScroll1.Value, Picture1
End Sub

Konversi Gambar RGB ke GrayScale

GrayScale adalah suatu citra dimana nilai dari setiap pixel merupakan sampel tunggal. Citra yang ditampilkan terdiri atas warna abu-abu, bervariasi pada warna hitam pada bagian yang intensitasnya terlemah dan warna putih pada intensitas terkuat. Citra GrayScale berbeda dengan citra “hitam putih”, dimana pada konteks komputer citra hitam putih hanya terdiri atas 2 warna saja yaitu “hitam” dan “putih”. GrayScale merupakan perhitungan dari intensitas cahaya pada setiap pixel pada spektrum elektromagnetik sengle band.

Untuk membuat gambar tampak hitam putih maka kita tinggal menyamakan intensitas dari tiga komponen warnanya. Kita bisa menghitungnya dengan mencari rata-rata dari warna merah, hijau dan biru.

gscale=(red+green+blue)/3

red = gscale
green = gscale
blue = gscale

Ini adalah contoh dari program nya :

untuk dapat membuat program di atas, ikutilah langkah-langkah berikut ini !

1.  buatlah form baru pada Visual Basic.

2.  Tambahkan object dibawah ini kedalam form yang telah kita buat !

  • Sebuah DriveListBox. DriveListBox ini berfungsi untuk menentukan Drive lokasi dari gambar yang akan kita gunakan nantinya.
  • Sebuah DirListBox. berfungsi untuk menentukan folder lokasi dari gambar.
  • Sebuah FileListBox. berfungsi untuk menentukan atau memilih gambar yang mana yang akan kita gunakan.
  • 3 buah PictureBox. biarkan name pada properties sesuai Default nya. Semua picturbox yang kita tambahkan ini nantinya akan digunakan untuk manampung gambar yang dihasilkan dari eksekusi program yang kita buat. Picture1 kita gunakan untuk menampung gambar asli yang akan kita gunakan, Picture2 dan Picture3,  akan kita gunakan untuk menggambar GrayScale dari gambar asli. Picture2 kita gunakan untuk menampung gambar Rata-rata dari GrayScale, Picture3 kita gunakan untuk menampung gambar Optimal dari GrayScale
  • kemudian aturlah letak object tersebut sesuai dengan keinginan anda.
3.  Code Program….
  • Double klik pada Drive1, ketikan code berikut ini !
                  Dir1.Path = Drive1.Drive
  • Double klik pada Dir1, ketikan code berikut ini !
                  File1.Path = Dir1.Path
  • Selanjutnya kita akan membuat sebuah Sub Preocedure  dengan nama aden yang nantinya akan kita panggil pada saat gambar dipilih pada File1. Ketikan code berikut ini pada form code !
Private Sub aden()
Dim i As Integer, j As Integer
Dim r As Integer, g As Integer, b As Integer
Dim warna As Long, x As Integer, y As Integer
Me.MousePointer = vbHourglass
For i = 1 To Picture1.Width Step 15
For j = 1 To Picture1.Height Step 15
warna = Picture1.Point(i, j)
r = warna And RGB(255, 0, 0)
g = Int((warna And RGB(0, 255, 0)) / 256)
b = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256)
x = Int((r + g + b) / 3) ‘untuk mencari rata-rata
y = 0.42 * r + 0.32 * g + 0.28 * b ‘untuk mencari optimal
Picture2.PSet (i, j), RGB(x, x, x)
Picture3.PSet (i, j), RGB(y, y, y)
Next j
Next i
Me.MousePointer = vbNormal
End Sub
  • Double klik pada File1, ketikan kode berikut ini !
                  Picture1.Picture = LoadPicture(File1.Path & “\” & File1.FileName)
                  Call aden
4.  Kemudian jalankan program. klik Run !
“Selamat Belajar”….
Link Download Source Code : Download (2KB)

Continue reading

Histogram RGB dengan Visual Basic


                   Sebelum kita membuat program Histogram RGB menggunakan Visual Basic alangkah baiknya kalau kita mengetahui dulu apa yang di sebut dengan Histogram itu sendiri.

Histogram adalah Sebuah grafik yang menggambarkan penyebaran nilai intensitas piksel dari suatu citra dan dapat juga menjadi petunjuk kadar kecerahan (Brightness) dan Contras sebuah citra.

Rumus untuk menghitung Histogram :

Contoh :

setelah kita mengerti apa yang di maksud dengan Histogram itu, sekarang mari kita lanjutkan untuk membuat program nya.

langkah-langkah membuat program histogram dengan Visual Basic :

1.  buatlah form baru pada Visual Basic.

2.  Tambahkan object dibawah ini kedalam form yang telah kita buat !

  • Sebuah DriveListBox. DriveListBox ini berfungsi untuk menentukan Drive lokasi dari gambar yang akan kita gunakan dalam Histogram nantinya.
  • Sebuah DirListBox. berfungsi untuk menentukan folder lokasi dari gambar.
  • Sebuah FileListBox. berfungsi untuk menentukan atau memilih gambar yang mana yang akan kita gunakan.
  • 4 buah PictureBox. biarkan name pada properties sesuai Default nya. Semua picturbox yang kita tambahkan ini nantinya akan digunakan untuk manampung gambar yang dihasilkan dari eksekusi program yang kita buat. Picture1 kita gunakan untuk menampung gambar asli yang akan kita gunakan, Picture2, Picture3, dan Picture4 akan kita gunakan untuk menggambar Histogram dari gambar asli.
  • kemudian aturlah letak object tersebut sesuai dengan keinginan anda.
3.  Selanjutnya adalah menambahkan Coding pada program.
  • Double klik pada Drive1, ketikan code berikut ini !
                  Dir1.Path = Drive1.Drive
  • Double klik pada Dir1, ketikan code berikut ini !
                  File1.Path = Dir1.Path
  • Selanjutnya kita akan membuat sebuah Sub Preocedure yang nantinya akan kita panggil. Ketikan code berikut ini pada form code !
                   Private Sub aden()
                   Dim hm(256) As Integer, hh(256) As Integer, hb(256) As Integer
                   Dim ht2 As Long
                   Dim xp As Integer, i As Integer, j As Integer
                   Dim m As Integer, h As Integer, b As Integer
                   Dim warna As Long, x As Long, a As Long
                   Picture2.Cls
                   Picture3.Cls
                   Picture4.Cls
                   Me.MousePointer = vbHourglass
                   For i = 1 To 256
                            hm(i) = 0
                            hh(i)  = 0
                            hb(i) = 0
                   Next
                   For i = 1 To Picture1.Width Step 15
                             For j = 1 To Picture1.Height Step 15
                                         warna = Picture1.Point(i, j)
                                         m = warna And RGB(255, 0, 0)
                                         h = Int((warna And RGB(0, 255, 0)) / 256)
                                         b = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256)
                                         If  m > 255 Then m = 255
                                         If  h > 255 Then h = 255
                                         If b > 255 Then b = 255
                                         hm(m) = hm(m) + 1
                                         hh(h) = hh(h) + 1
                                         hb(b) = hb(b) + 1
                             Next j
                   Next i
                   ht2 = Picture2.Height
                   For i = 1 To 256
                              xp = 15 * (i – 1) + 1
                              Picture2.Line (xp, ht2 – hm(i))-(xp, ht2), RGB(255, 0, 0)
                              Picture3.Line (xp, ht2 – hh(i))-(xp, ht2), RGB(0, 255, 0)
                              Picture4.Line (xp, ht2 – hb(i))-(xp, ht2), RGB(0, 0, 255)
                    Next i
                    Me.MousePointer = vbNormal
                    End Sub
  • Double klik pada File1, ketikan kode berikut ini !
                  Picture1.Picture = LoadPicture(File1.Path & “\” & File1.FileName)
                  Call aden
4.  Kemudian jalankan program. klik Run !
Link Download Source Code : Download (2KB)
     ……………………………”SELAMAT MENCOBA”…………………………….

Menampilkan File Gambar dengan VB

Assalamu’alaikum Wr.Wb.

Artikel ini merupakan cara untuk menampilkan gambar yang di input secara manual. Pada bahasa pemrograman visual basic 6.0 hal itu dapat di lakukan dengan sangat mudah. yaitu dengan perintah loadpicture.

Berikut adalah langkah untuk membuat program berikut seperti di atas:

1.  Buat Project baru, dan tambahkan komponen berikut ini

  • Label1

                      ubah caption pada menu properties dengan Show Image.

  • DriveListBox1
  • DirListBox1
  • FileListBox1

ubah beberapa nilai properties pada FileListBox1 yaitu ubah nilai Archive menjadi True, ubah nilai Hidden menjadi False, ubah ReadOnly menjadi True, ubah System menjadi False. Kemudian masukkan lah nilai ini (*.bmp;*.jpg;*.gif;*.wmf;*.ico) ke Pattern. ini bertujuan untuk membatasi file agar yang ditampilkan pada FileListBox1 hanya file gambar.

  • Image1

ubah Stretch pada menu properties dengan nilai True agar gambar yang di input berukuran sesuai dengan ukuran Image1.

2.  Klik ganda kontrol DriveListBox1 dan untuk mengaitkan ketiganya sehingga bisa bekerja secara normal, tuliskan kode          berikut ini.

Private Sub Drive1_Change()

Dir1.Path = Drive1.Drive

EndSub

Kode diatas berarti perubahan yang terjadi di kontrol drive harus diikuti oleh kontrol direktori.

3.  Klik ganda kontrol DirListBox1, dan tuliskan kode berikut ini.

Private Sub Dir1_Change()

File1.Path = Dir1.Path

EndSub

4.  Klik ganda kontrol FileListBox1, dan tuliskan kode berikut ini.

Private Sub Dir1_Change()

Image1.Picture = LoadPicture(File1.Path & “\” & File1.FileName)

EndSub

Kode diatas berarti pada saat gambar dipilih pada FileListBox1 gambar pada Image1 berubah sesuai dengan gambar yang di pilih.

5.  Jalankan program. Hasilnya adalah  Jika mengubah drive, maka seluruh informasi pada direktori dan drive juga akan berubah. Dan perubahan pada direktori (DirListBox) akan diikuti oleh FileListBox1. kemudian pada saat FileListBox dipilih maka pada Image1 gambar akan berubah sesuai dengan gambar yang dipilih pada FileListBox1.

Link Download Source Code : Download (89KB)

Moga Bermanfaat, Wassalam.

Membuat Animasi Roda Berputar Dengan Flash Mx

Untuk membuat animasi roda berputar di Macromedia Flash MX ikutilah langkah-langkah seperti dibawah ini :

  1. Buat lah file baru di Macromedia Flash MX anda dengan menekan tombol kombinasi CTRL+N bersamaan atau dengan mengklik File dan pilih New.
  2. Kemudian setting ukuran layar dengan 800 x 600 pixel dan 12 fps.
  3. Buat lah frame roda dengan drawing tool atau dengan mengimport gambar roda.
  4. Seleksilah gambar roda tersebut kemudian convert menjadi simbol Movie Clip dengan nama roda.
  5. kemudian convert lagi gambar roda terebut agar ketika kita memasuki mode edit Movieclip animasi roda, kita tidak perlu mengconvert symbol lagi..
  6. Double klip pada movieclip roda untuk mengeditnya
  7. klik frame 15, kemudian tambahkan keyframe
  8. kemudian klik kanan pada frame 10 dan pilih create motion tween
  9. klik frame 10 dan buka properties, pilih CW pada option rotate. maka akan didapatkan sebuah animasi roda berputar searah dengan jarum jam.
  10. tekan CTRL+E untuk membali ke stage utama.
  11. untuk melihat hasilnya tekan CTRL+W.

***Selamat Mecoba***