Selasa, 26 Mei 2009

>> Praktikum 3 Balik Gambar

1. Tujuan:
1. Mahasiswa dapat membuat program untuk memproses gambar dengan mengambil
warna RGB
2. Mahasiswa dapat membuat program untuk memproses gambar dengan
meletakkan warna RGB pada lokasi x dan y

2. Percobaan:
1. Buatlah program untuk melakukan perputaran citra yang setiap baris pada picture-box 1
menjadi kolom pada picture-box 2 dan setiap kolom pada picture box 1 menjadi baris
pada picture box 2. Tampilan formnya sebagai berikut.

Desain:
Listing progam yang ditambahkan pada header file
public:
CTigaDlg(CWnd* pParent = NULL); // standard constructor
CBitmap m_bmpBitmap;
Listing progam pada button1
void CTigaDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CDC* pDC = m_pic1.GetDC();//
CDC dcMem1;
CRect rect;//kotak di picture
BITMAP bm;//
HBITMAP
hBitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),
"gambar.bmp",IMAGE_BITMAP, 0, 0,
LR_LOADFROMFILE|LR_CREATEDIBSECTION);
if(hBitmap)
{
if(m_bmpBitmap.DeleteObject())
m_bmpBitmap.Detach();
m_bmpBitmap.Attach(hBitmap);
}
m_pic1.GetClientRect(rect);//
m_bmpBitmap.GetBitmap(&bm);//
dcMem1.CreateCompatibleDC(pDC);
dcMem1.SelectObject(&m_bmpBitmap);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem1,
0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);//
}
Listing progam pada button2
void CTigaDlg::OnButton2()
{
// TODO: Add your control notification handler code here
int i,j;
long int warna[300][300];
CDC* pDC = m_pic2.GetDC();//
CDC dcMem1;
CRect rect;//kotak di picture
BITMAP bm;//
HBITMAP
hBitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),
"gambar.bmp",IMAGE_BITMAP, 0, 0,
LR_LOADFROMFILE|LR_CREATEDIBSECTION);
if(hBitmap)
{
if(m_bmpBitmap.DeleteObject())
m_bmpBitmap.Detach();
m_bmpBitmap.Attach(hBitmap);
}
m_pic2.GetClientRect(rect);//
m_bmpBitmap.GetBitmap(&bm);//
dcMem1.CreateCompatibleDC(pDC);
dcMem1.SelectObject(&m_bmpBitmap);

Hasil running:

Penjelasan Program :
Program pada button 2:
for(i=0;i

ANALISA

Hasil praktikum dapat dilihat pada gambar 1. Untuk mengambil gambar, kita tekan 'load gambar', dan untuk membalik gambar tersebut secara horizontal, kita tekan 'balik horizontal', sedangkan apabila kita ingin membalik gambar secara vertikal kita tinggal menekan 'balik vertikal'.






hal yang dilakukan pertama adalah mengambil semua pixel tiap baris dalam
gambar dengan perintah getPixel. Kemudian pixel-pixel yang didapat disimpan
dalam array yang nantinya akan diset (ditampilkan) dalam picture2, pada picture 2
baris pertama akan diisi oleh pixel-pixel dari baris terbawah dari gambar,
sehingga gambar akan terbalik yang atas menjadi bawah.
Program pada button 3 :






Kesimpulan :
1. Kita dapat membuat suatu aplikasi menggunakan visual C++ untuk keperluan membalik gambar baik secara vertikal maupun horizontal.
2. Aplikasi tersebut dibuat menggunakan dialog based
3. Untuk membuat gambar menjadi terbalik, kita masukkan program untuk merubah posisi pixel gambar tersebut