Pembacaan dan Penampilan Image

dokumen-dokumen yang mirip
Pre Processing. Memberikan gambaran jenis-jenis pre-processing

Kompensasi Pencahayaan

Pre Processing. Memberikan gambaran jenis-jenis pre-processing

PROGRAM STUDI TEKNIK KOMPUTER JURUSAN TEKNIK KOMPUTER POLITEKNIK NEGERI SRIWIJAYA PALEMBANG Praktikum Pengolahan Citra Digital

Pengolahan Citra Digital Dengan Visual Basic

LISTING PROGRAM PADA MICROSOFT VISUAL BASIC 6.0

LISTING PROGRAM. 'byte of info Private Type RGBcolor R As Byte 'amount of red G As Byte 'amount of green B As Byte 'amount of blue End Type

MENGELOLA FILE. - Untuk menampilkan file, perlu membuka direktori penyimpanannya.

BAB III PEMBAHASAN MASALAH

Sesi/Perkuliahan ke: XII

Fungsi Kelompok : yang dalam hal ini d adalah jumlah pixel yang terlibat dalam perhitungan rata-rata. Gambar 1 memperlihatkan dua buah skema

OPERASI FILE Operasi File Dalam Visual Basic Membuka File

MODUL III PENGGUNAAN KOMPONEN LANJUTAN

CONTOH KODE DALAM BAB 3

E-Trick Visual Basic 6.0

Pertemuan 3 Bekerja dengan Kontrol


Malang, Januari 2007 Penulis

Bab 7 Komponen Dasar Visual Basic 29 BAB VII KOMPONEN DASAR VISUAL BASIC TUJUAN PRAKTIKUM

BAB-2 : TIPE DATA, VARIABEL DAN OPERATOR

MODUL IV PERULANGAN ( LOOPING )

Visual Basic 6.0 For Beginners


Pendidikan Teknik Informatika Universitas Negeri Malang

Modul Praktikum ke : 11 : Image Control dan Picture Box : Mahasiswa dapat menggunakan Image Control dan Picture Box

MODUL I MEMBUAT PROGRAM PERTAMA VISUAL BASIC

PROGRAM INTERFACING AUDIO DAN VIDEO DENGAN PROGRAM VISUAL BASIC LAPORAN TUGAS KARYA TULIS INTERFACING

DISUSUN OLEH : : Friska Rosalina NIM :

Struktur Data II. Bekerja Dengan Form.

BAB 11 MENGELOLA FILE & OLE (OBJECT LINGKING EMBEDDING)

BAB V PROSEDUR DAN FUNGSI

MODUL-MODUL PRAKTIKUM VB.

Visual Basic 6.0 For Beginners

Keterangan : Integer Long : tipe data untuk angka bulat Single, Double : tipe data untuk angka pecahan/desimal Currency : tipe data untuk angka mata

Menampilkan List Komputer dan User-nya dalam Jaringan Intranet Dengan Fungsi WNet API

1. Buka Visual Basic 6 sobat. Buat project baru, masukkan componen Microsoft Winsock Control 2. Masukkan coding berikut

Lampiran A HELP EZTWAIN. crash.

BAB IV IMPLEMENTASI DAN PENGUJIAN

Algoritma Pemrograman 2 B

BAB IV Pemrograman Grafis

Gambar 8.1. Dialog Menu Editor.

Lampiran A. Program Visualisasi Cuaca Otomatis

STRUKTUR KENDALI PERULANGAN

BAB III LANDASAN TEORI. muka yang bersifat grafis Graphical User Interface (GUI). Daripada menulis

BAB-3 ATRIBUT PRIMITIF 2D

Penggandaan Ke Sistem

Excel Sebagai Output VB 3.1 Excel Sebagai Output VB

VISUAL BASIC 6.0 PEMROGRAMAN KOMPUTER. Visual Basic

DAFTAR PUSTAKA. Multimedia Control, Steven Holzner. Diakses pada tanggal 14/09/2011 Dari

PENGGUNAAN DATA DAN VARIABEL

PRAKTIKUM 4 ARRAY DAN SUB ROUTINE

MODUL 2 SELECTION & LOOPING PADA FORM

Krisna D. Octovhiana

LISTING PROGRAM. Script Menu Utama Pada Game Tebak Kata

MODUL VI Penggunaan Struktur Kontrol Pengulangan

1.1 Mengenal Visual Basic (VB) 1.2 Mengenal Integrated Development Environment (IDE) VB 6

BAB IV IMPLEMENTASI DAN PENGUJIAN. dan tempat implementasi dari perangkat lunak ini adalah sebagai berikut :

MODUL 2 PERANCANGAN INTERFACE

Visual Basic 6.0 For Beginners

Pengenalan Visual Basic

BAB II LANDASAN TEORI

BAB IV PERANCANGAN. Gambar diatas adalah tampilang awal ketika ingin memulai project baru. Pilih Standart EXE untuk memulai project.

BAB 2 LANDASAN TEORI

Pertemuan 1 Pengenalan Visual Basic

Bab 4 Hasil dan Pembahasan

Andy Prasetyo Utomo, S.Kom Pemrograman Terstruktur (Visual Basic 6.0)

MDI Form Menu Data Access Control

Program Studi Teknik Mesin S1

Modul Praktikum Ke-2

MODUL I Pengenalan IDE Visual Basic 6.0

Cepat Mahir Visual Basic 6.0. Cepat Mahir Visual Basic 6.0. Bab 10 Penggunaan Kontrol Array. Krisna D. Octovhiana

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K

Krisna D. Octovhiana. 1.1 Mengenal Struktur Kontrol.

SATUAN ACARA PERKULIAHAN MATA KULIAH ALGORITMA dan PEMROGRAMAN 1B(D3/TK) KODE : / SKS. Teknik Pembelajaran Kuliah mimbar dimana

BAB III METODOLOGI PENELITIAN

MODUL-MODUL PRAKTIKUM VB.

Variabel, Tipe Data, dan Operator. Oleh : Edi Sugiarto, S.Kom, M.Kom

Krisna D. Octovhiana. 1.1 Mengenal Data dan Variabel.

Program absen dengan menggunakan visual basic 6.0

MODUL 2 Variabel, Val, If tunggal dan If bersarang + case

Krisnha D. Oktovhiana

PROGRAM STUDI TEKNIK KOMPUTER JURUSAN TEKNIK KOMPUTER POLITEKNIK NEGERI SRIWIJAYA PALEMBANG Praktikum Pengolahan Citra Digital

Krisna D. Octovhiana. 1.1 Apa itu Array?

LAMPIRAN CODING PROGRAM FORM DISPLAY : Private Sub Cmd_Cancel_Click() End End Sub

Percobaan 1 PENGENALAN INTERFACE PARALLEL DAN SEVEN SEGMENT LED DISPLAY

Coding : Coding : Oleh : Uus Rusmawan Hal - 1

Private Sub cmdprint_click() WebBrowser1.ExecWB OLECMDID_PRINT,OLECMDEXECOPT_DODEFAULT End Sub

Pemrograman Visual Modul I Perkenalan Lembar Kerja VB 6.0. S. Thya Safitri

Sesi/Perkuliahan ke: VII

Praktikum Pengolahan Citra - Pertemuan 1.2

BAB V Pengenalan Komponen-Komponen (object) pada VB

PROGRAM KOMBINASI PEMUTAR MUSIK DAN ALARM DENGAN MENGGUNAKAN MICROSOFT VISUAL BASIC 6.0. Tiffani Dita Permata Putri (NIM )

Pertemuan 11 type data, deklarasi variabel dan array 1.1 Mengenal Data dan Variabel

Krisna D. Octovhiana. 1.1 Mengenal Struktur Kontrol.

Cepat Mahir Visual Basic 6.0. Cepat Mahir Visual Basic 6.0. Bab 13 Penanganan Keyboard. Krisna D. Octovhiana

Transkripsi:

PRAKTIKUM I Pembacaan dan Penampilan Image Tujuan Memperkenalkan bahasa pemrograman tertentu sebagai alat bantu pemrograman Image Processing Memperkenalkan Image dan komponen-komponennya Memperkenalkan cara-cara pembacaan dan menampilkan Image Teori Penunjang Prosedur Percobaan 1. Pembacaan dan Penampilan Image a. Percobaan berikut hanya berkaitan dengan membaca image dari file dan langsung ditambilkan pada komponen visual tertentu b. Mengambil Gambar dari File i. Buat suatu project baru yang berisi satu form dengan nama Form1 Tambahkan komponen DriveListBox, DirListBox, dan FileListBox dengan nama masing-masing Drive1, Dir1 dan File1 pada Form1 i Masukkan program berikut pada Form1 1

Private Sub Dir1_Change() File1.Path = Dir1.Path Private Sub Drive1_Change() Dir1.Path = Drive1.Drive MessageBox File1.Path + "\" + File1.FileName Private Sub Form_Load() File1.Pattern = "*.bmp;*.jpg;*.jpeg;*.gif;*.tif" iv. Jalankan program dan pilih file tertentu c. Menampilkan Menggunakan Komponen Form i. Tambahkan Form baru pada project dengan nama Form2 Ubah program pada sub File1_Click() Form2.Picture = LoadPicture(File1.Path + "\" + File1.FileName) Form2.Show d. Menampilkan Menggunakan Komponen Image i. Pasang komponen Image1 pada Form1 Ubah program pada sub File1_Click() 2

Image1.Picture = LoadPicture(File1.Path + "\" + File1.FileName) i Set/ubah Property Stretch dari Image1 bernilai True atau False dan coba sekali lagi e. Menampilkan Menggunakan Komponen PictureBox i. Pasang komponen Picture1 pada Form1 Ubah program pada sub File1_Click() Picture1.Picture = LoadPicture(File1.Path + "\" + File1.FileName) i Set/ubah Property Auto Size dari Picture1 bernilai True atau False dan coba sekali lagi f. Menampilkan Menggunakan Komponen PictureClip i. Pasang komponen Picture1, PictureClip1,ScrollBar1, ScrollBar2 dan SpinButton1 pada Form1. Ubah program pada sub File1_Click(), Form_Load() dan tambahkan beberapa sub program berikut. PictureClip1.Picture = LoadPicture(File1.Path + "\" + File1.FileName) ScrollBar1.Max = PictureClip1.Height - 1 ScrollBar2.Max = PictureClip1.Width - 1 ScrollBar1.Value = 0 ScrollBar2.Value = 0 SpinButton1.Min = 1 Picture1.ScaleMode = 3 3

If PictureClip1.Height / Picture1.ScaleHeight < _ PictureClip1.Width / Picture1.ScaleWidth Then SpinButton1.Max = 100& * PictureClip1.Height / Picture1.ScaleHeight Else SpinButton1.Max = 100& * PictureClip1.Width / Picture1.ScaleWidth End If If SpinButton1.Max < 1 Then SpinButton1.Max = 1 SpinButton1.Value = SpinButton1.Max Tampil Private Sub Form_Load() File1.Pattern = "*.bmp;*.jpg;*.jpeg;*.gif;*.tif" ScrollBar1.Max = 1000 ScrollBar2.Max = 1000 SpinButton1.Min = 10 SpinButton1.Max = 1000 Private Sub Tampil() On Error Resume PictureClip1.ClipX = ScrollBar2.Value PictureClip1.ClipY = ScrollBar1.Value PictureClip1.ClipHeight = Picture1.ScaleHeight * SpinButton1.Value / 100 If PictureClip1.ClipHeight > PictureClip1.Height Then PictureClip1.ClipHeight = PictureClip1.Height End If PictureClip1.ClipWidth = Picture1.ScaleWidth * SpinButton1.Value / 100 If PictureClip1.ClipWidth > PictureClip1.Width Then PictureClip1.ClipWidth = PictureClip1.Width End If PictureClip1.StretchX = Picture1.ScaleWidth PictureClip1.StretchY = Picture1.ScaleHeight Picture1.Picture = PictureClip1.Clip On Error GoTo 0 Private Sub ScrollBar1_Change() Tampil Private Sub ScrollBar2_Change() Tampil Private Sub SpinButton1_Change() Tampil i Uji coba program dengan membaca file gambar yang berukuran besar dan geser-geser ScrollBar serta Zoom gambar menggunakan SpinButton. 2. Pembacaan Data Image, dianggap menggunakan Picturebox dengan ukuran terbatas a. Program berikut akan melakukan pembacaan data-data image yang telah diambil dari file menjadi sebuah variable vimage yang dapat digunakan untuk keperluan image processing. b. Untuk memudahkan percobaan, dianggap proses pembacaan dan penampilan gambar dari file menggunakan komponen PictureBox dengan ukuran gambar yang tertentu (320 x 240). 4

c. Anda dapat menggunakan project sebelumnya yang membaca file gambar ke PictureBox. d. Membaca Data Menggunakan Point i. Sifat Tidak menggunakan deklarasi tambahan Tidak bergantung setting warna sistem Bergantung mode skala dari PictureBox/ Image/ Form yang digunakan (Twip, Pixel, cm, mm, User) Bergantung dari mode Auto Redraw Lambat Tambahkan Module1 pada Project untuk memasukkan program berikut ' Deklarasi Jenis type Data RGB, untuk keperluan Image Processing Public Type trgb24 B As Byte G As Byte R As Byte Global vimage(0 To 319, 0 To 239) As trgb24 Masukkan program berikut pada Form1 Private Sub Dir1_Change() File1.Path = Dir1.Path Private Sub Drive1_Change() Dir1.Path = Drive1.Drive Picture1.Picture = LoadPicture(File1.Path + "\" + File1.FileName) Dim y As Integer, x As Integer Dim p As Long p = Picture1.Point(x, y) 5

vimage(x, y).r = p And &HFF vimage(x, y).g = (p \ &H100) And &HFF vimage(x, y).b = (p \ &H10000) And &HFF MsgBox "Selesai membaca data" Private Sub Form_Load() File1.Pattern = "*.bmp;*.jpg;*.jpeg;*.gif;*.tif" Picture1.ScaleMode = 3 e. Membaca Data Menggunakan GetPixel i. Sifat Memerlukan deklarasi panggilan ke Window API Tidak bergantung setting warna sistem Tidak bergantung mode skala Tidak bergantung dari mode Auto Redraw Lebih cepat Masukkan program berikut pada Module1 ' Deklarasi Jenis type Data RGB, untuk keperluan Image Processing Public Type trgb24 B As Byte G As Byte R As Byte Public Declare Function GetPixel Lib "gdi32" ( _ ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long Global vimage(0 To 319, 0 To 239) As trgb24 i Masukkan program berikut pada Form1 Private Sub Dir1_Change() File1.Path = Dir1.Path Private Sub Drive1_Change() Dir1.Path = Drive1.Drive Picture1.Picture = LoadPicture(File1.Path + "\" + File1.FileName) Dim y As Integer, x As Integer Dim p As Long p = GetPixel(Picture1.hdc, x, y) vimage(x, y).r = p And &HFF vimage(x, y).g = (p \ &H100) And &HFF vimage(x, y).b = (p \ &H10000) And &HFF MsgBox "Selesai membaca data" 6

Private Sub Form_Load() File1.Pattern = "*.bmp;*.jpg;*.jpeg;*.gif;*.tif" Picture1.ScaleMode = 3 f. Membaca Data Menggunakan Copy i. Sifat Memerlukan deklarasi panggilan ke Window API Bergantung setting warna sistem Bergantung dengan ukuran pixel file gambar Tidak bergantung mode skala Tidak bergantung dari mode Auto Redraw Sangat Cepat Masukkan program berikut pada Module1 ' Deklarasi Jenis type Data RGB, untuk keperluan Image Processing Public Type trgb24 B As Byte G As Byte R As Byte Public Type BITMAP '14 bytes bmtype As Long bmwidth As Long bmheight As Long bmwidthbytes As Long bmplanes As Integer bmbitspixel As Integer bmbits As Long Public Declare Function GetObject Lib "gdi32" Alias "GetObjectA" ( _ ByVal hobject As Long, ByVal ncount As Long, lpobject As Any) As Long Public Declare Sub RtlMoveMemory Lib "kernel32" ( _ ByVal hpvdest As Long, ByVal hpvsource As Long, ByVal cbcopy As Long) Global vimage(0 To 319, 0 To 239) As trgb24 i Masukkan program berikut pada Form1 Private Sub Dir1_Change() File1.Path = Dir1.Path Private Sub Drive1_Change() Dir1.Path = Drive1.Drive Picture1.AutoSize = True Picture1.Picture = LoadPicture(File1.Path + "\" + File1.FileName) Dim bmp As BITMAP, u As Long GetObject Picture1.Picture.Handle, Len(bmp), bmp u = bmp.bmwidthbytes * bmp.bmheight If u > 320# * 240 * 3 Then u = 320# * 240 * 3 7

RtlMoveMemory VarPtr(vImage(0, 0)), bmp.bmbits, u MsgBox "Selesai membaca data" Private Sub Form_Load() File1.Pattern = "*.bmp;*.jpg;*.jpeg;*.gif;*.tif" Picture1.ScaleMode = 3 iv. Sebelumnya atur setting warna window pada RGB 24 bit dan baca file gambar dengan ukuran 320 x 240 3. Menampilkan Kembali Data Image, asumsi menggunakan GetPixel a. Program berikut digunakan untuk menampilkan kembali data dari variable Image ke komponen visual b. Untuk memudahkan dianggap proses pebacaan data gambar menggunakan komponen PictureBox dengan cara GetPixel c. Menampilkan Data Menggunakan Pset i. Sifat Tidak menggunakan deklarasi tambahan Tidak bergantung setting warna sistem Bergantung mode skala dari PictureBox/ Image/ Form yang digunakan (Twip, Pixel, cm, mm, User) Bergantung dari mode Auto Redraw Lambat Masukkan Program berikut pada Module1 ' Deklarasi Jenis type Data RGB, untuk keperluan Image Processing Public Type trgb24 B As Byte G As Byte R As Byte Public Declare Function GetPixel Lib "gdi32" ( _ ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long Global vimage(0 To 319, 0 To 239) As trgb24 i Masukkan Program berikut pada Form1 Private Sub Dir1_Change() File1.Path = Dir1.Path Private Sub Drive1_Change() Dir1.Path = Drive1.Drive Picture1.Picture = LoadPicture(File1.Path + "\" + File1.FileName) 8

Dim y As Integer, x As Integer Dim p As Long p = GetPixel(Picture1.hdc, x, y) vimage(x, y).r = p And &HFF vimage(x, y).g = (p \ &H100) And &HFF vimage(x, y).b = (p \ &H10000) And &HFF vimage(x, y).b = 0 Picture1.PSet (x, y), _ RGB(vImage(x, y).r, vimage(x, y).g, vimage(x, y).b) Private Sub Form_Load() File1.Pattern = "*.bmp;*.jpg;*.jpeg;*.gif;*.tif" Picture1.ScaleMode = 3 d. Menampilkan Data Menggunakan SetPixel i. Sifat Memerlukan deklarasi panggilan ke Window API Tidak bergantung setting warna sistem Tidak bergantung mode skala Tidak bergantung dari mode Auto Redraw Lebih cepat Masukkan Program berikut pada Module1 ' Deklarasi Jenis type Data RGB, untuk keperluan Image Processing Public Type trgb24 B As Byte G As Byte R As Byte Public Declare Function SetPixel Lib "gdi32" ( _ ByVal hdc As Long, ByVal x As Long, ByVal y As Long, _ ByVal crcolor As Long) As Long Public Declare Function GetPixel Lib "gdi32" ( _ ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long Global vimage(0 To 319, 0 To 239) As trgb24 i Masukkan Program berikut pada Form1 Private Sub Dir1_Change() File1.Path = Dir1.Path 9

Private Sub Drive1_Change() Dir1.Path = Drive1.Drive Picture1.Picture = LoadPicture(File1.Path + "\" + File1.FileName) Dim y As Integer, x As Integer Dim p As Long p = GetPixel(Picture1.hdc, x, y) vimage(x, y).r = p And &HFF vimage(x, y).g = (p \ &H100) And &HFF vimage(x, y).b = (p \ &H10000) And &HFF vimage(x, y).b = 0 SetPixel Picture1.hdc, x, y, RGB(vImage(x, y).r, vimage(x, y).g, vimage(x, y).b) Private Sub Form_Load() File1.Pattern = "*.bmp;*.jpg;*.jpeg;*.gif;*.tif" Picture1.ScaleMode = 3 4. Menampilkan Data dari satu PictureBox ke PictureBox lainnya Menggunakan Copy Image a. Beberapa cara yang dapat digunakan i. Point Pset Sangat lambat (lebih dari satu detik) i iv. GetPixel SetPixel Lebih cepat Copy Image Buffer Image Sangat cepat Copy Image Image Paling cepat b. Pasang dua PictureBox pada Form1 dengan nama psumber dan ptujuan c. Pasang beberapa Command Button dengan nama End, cmdgetset, cmdcopylangsung dan cmdcopybuffer d. Pasang TextBox dengan nama Text1 10

e. Tambahkan Module1 pada Project dan masukkan program berikut Public Declare Function BitBlt Lib "gdi32" ( _ ByVal hdestdc As Long, ByVal x As Long, ByVal y As Long, _ ByVal nwidth As Long, ByVal nheight As Long, ByVal hsrcdc As Long, _ ByVal XSrc As Long, ByVal YSrc As Long, ByVal dwrop As Long) As Long Public Declare Function SetPixel Lib "gdi32" ( _ ByVal hdc As Long, ByVal x As Long, ByVal y As Long, _ ByVal crcolor As Long) 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 CreateCompatibleDC Lib "gdi32" _ (ByVal hdc As Long) As Long Public Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long Public Declare Function SelectObject Lib "gdi32" _ (ByVal hdc As Long, ByVal hobject As Long) As Long Public Declare Function GetObject Lib "gdi32" Alias "GetObjectA" _ (ByVal hobject As Long, ByVal ncount As Long, lpobject As Any) As Long Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _ (Destination As Any, Source As Any, ByVal Length As Long) Declare Sub RtlMoveMemory Lib "kernel32" _ (ByVal hpvdest As Long, ByVal hpvsource As Long, ByVal cbcopy As Long) Public Declare Function CreateBitmap Lib "gdi32" ( _ ByVal nwidth As Long, ByVal nheight As Long, ByVal nplanes As Long, _ ByVal nbitcount As Long, lpbits As Any) As Long Public Type BITMAP '14 bytes bmtype As Long bmwidth As Long bmheight As Long bmwidthbytes As Long bmplanes As Integer bmbitspixel As Integer bmbits As Long Type trgb24 b As Byte G As Byte R As Byte Public VideoData(0 To 319, 0 To 239) As trgb24 Public Data(0 To 319, 0 To 239) As trgb24 Public Data2(0 To 319, 0 To 239) As trgb24 f. Masukkan program berikut pada Form1 11

Dim fps As Long 'Dim Data(320, 240, 3) As Byte 'Dim Data2(320, 240, 3) As Byte Dim DataB() As Byte Private Sub AmbilRGB(Data() As trgb24, Sumber()) n = 0 For y = 0 To ly - 1 For x = 0 To lx - 1 Data(x, y).b = Sumber(n) Data(x, y).g = Sumber(n + 1) Data(x, y).r = Sumber(n + 2) n = n + 3 Private Sub RGB16_24(Sumber() As Integer, Tujuan() As trgb24) Dim a As Integer For y = 0 To 239 For x = 0 To 319 a = Sumber(x, y) Tujuan(x, y).r = (a \ &H400) And &H1F Tujuan(x, y).r = (a \ &H20) And &H1F Tujuan(x, y).r = a And &H1F Private Sub RGB24_16(Sumber() As trgb24, Tujuan() As Integer) Dim a As Integer For y = 0 To 239 For x = 0 To 319 a = (Sumber(x, y).r \ 8) * &H400 + _ (Sumber(x, y).r \ 8) * &H20 + Sumber(x, y).b \ 8 Tujuan(x, y) = a Private Sub cmdcopybuffer_click() If cmdcopybuffer.caption <> "Selesai" Then cmdcopybuffer.caption = "Selesai" fps = 0 Dim hdc As Long, hbuffer As Long Dim bmp As BITMAP, bmp2 As BITMAP GetObject psumber.picture.handle, Len(bmp), bmp ReDim DataB(bmp.bmWidthBytes * bmp.bmheight) As Byte RtlMoveMemory VarPtr(DataB(0)), bmp.bmbits, _ bmp.bmwidthbytes * bmp.bmheight 'AmbilRGB Data, bmp.bmbits 'CreateBitmap bmp.bmwidth, bmp.bmheight, bmp.bmplanes, _ bmp.bmbitspixel, bmp2.bmbits ptujuan.picture = LoadPicture("coba.bmp") GetObject ptujuan.picture.handle, Len(bmp2), bmp2 'Data(5, 5).G = 0 While cmdcopybuffer.caption = "Selesai" RtlMoveMemory bmp2.bmbits, VarPtr(DataB(0)), _ bmp.bmwidthbytes * bmp.bmheight fps = fps + 1 DoEvents Wend Else cmdcopybuffer.caption = "Copy Buffer" End If 12

Private Sub cmdcopylangsung_click() If cmdcopylangsung.caption <> "Selesai" Then cmdcopylangsung.caption = "Selesai" fps = 0 While cmdcopylangsung.caption = "Selesai" BitBlt ptujuan.hdc, 0, 0, psumber.scalewidth, _ psumber.scaleheight, psumber.hdc, 0, 0, &HCC0020 fps = fps + 1 DoEvents Wend Else cmdcopylangsung.caption = "Copy Langsung" End If Private Sub cmdgetset_click() If cmdgetset.caption <> "Selesai" Then Dim y As Integer, x As Integer, p As Long cmdgetset.caption = "Selesai" fps = 0 While cmdgetset.caption = "Selesai" For y = 0 To psumber.scaleheight - 1 For x = 0 To psumber.scalewidth - 1 p = GetPixel(pSumber.hdc, x, y) SetPixel ptujuan.hdc, x, y, p fps = fps + 1 DoEvents Wend Else cmdgetset.caption = "Get/Set Pixel" End If Private Sub End_Click() End Private Sub Form_Load() ptujuan.scalemode = 3 psumber.scalemode = 3 psumber.autosize = True psumber.picture = LoadPicture("coba.bmp") Private Sub Timer1_Timer() Text1 = fps fps = 0 Tugas 1. Cara menampilkan mana yang lebih baik antara menampilkan ke Form, Image, PictureBox atau menggunakan PictureClip? Jelaskan sifat masing-masing. 2. Apa peran dari penggunaan property Image1.Stretch, Picture1.AutoSize dan Picture1.AutoRedraw? 13

3. Uji dengan teliti kecepatan dari penggunaan cara Point, GetPixel dan Copy Image. Mana yang lebih cepat? 4. Uji dengan teliti kecepatan dari penggunaan cara Pset dan SetPixel. Mana yang lebih cepat? 5. Coba program kamera tersebut dijadikan file exe. Bandingkan kecepatan yang didapatkan antara saat dijalankan pada editor VB dan saat dijalankan langsung dari file exe. 14