Senin, 09 April 2012

Membuat Grafiti di VB 6 berbentuk bendera


Source code lengkap bisa didownload di http://www.ziddu.com/download/19099090/Flag.zip.html

Melanjutkan belajar tentang API Programming .
Kali ini saya akan membuat grafiti dari VB dengan model yang lain.Sebenarnya ini adalah tugas sewaktu kuliah, daripada tergeletak lemas di gudang  laptop tanpa daya. Maka saya beberkan rahasia saya, hehehe...

Soal : buatlah model seperti berikut di VB 6.0



Berikut source code utamanya



 'bendera luar
    a0 = CreateRectRgn(0, 100, 999, 500)
    a1 = CreateEllipticRgn(-30, 60, 450, 200)
    a2 = CreateEllipticRgn(430, 5, 1000, 170)
    
    nKoor = 3
    segi_a3(1).x = 450
    segi_a3(1).y = 60
    segi_a3(2).x = 420
    segi_a3(2).y = 94
    segi_a3(3).x = 470
    segi_a3(3).y = 130
    ' Creates region to fill with color.
    a3 = CreatePolygonRgn(segi_a3(1), nKoor, ALTERNATE)
    a4 = CreateEllipticRgn(-30, 440, 453, 580)
    a5 = CreateEllipticRgn(450, 430, 1000, 575)
  'lubang dalam sebelah kiri
    a6 = CreateEllipticRgn(-30, 130, 440, 230)
    a7 = CreateEllipticRgn(-30, 170, 440, 270)
    a8 = CreateEllipticRgn(-30, 350, 440, 450)
    a9 = CreateEllipticRgn(-30, 390, 440, 490)
    a10 = CreateRectRgn(0, 100, 80, 420)
    b1 = CreateRectRgn(80, 150, 130, 380)
'lubang dalam sebelah kanan
    b2 = CreateEllipticRgn(420, 100, 970, 270)
    b3 = CreateEllipticRgn(420, 60, 970, 230)
    b4 = CreateEllipticRgn(420, 310, 970, 490)
    b5 = CreateEllipticRgn(420, 260, 900, 450)
    b6 = CreateRectRgn(900, 150, 1000, 500)
    b7 = CreateRectRgn(850, 220, 900, 450)
    
    
    'variasi
    b8 = CreateRectRgn(940, 180, 960, 490)
    kotak_a = CreateRectRgn(60, 100, 170, 120)
    kotak_b = CreateRectRgn(780, 510, 880, 530)
    circle_a = CreateEllipticRgn(200, 80, 240, 120)
    circle_b = CreateEllipticRgn(700, 510, 740, 550)
    elips_a = CreateEllipticRgn(270, 90, 330, 110)
    elips_b = CreateEllipticRgn(560, 520, 680, 540)
    
    'bintang
    ns3a = 3
    bintang1(1).x = 275
    bintang1(1).y = 290
    bintang1(2).x = 200
    bintang1(2).y = 240
    bintang1(3).x = 350
    bintang1(3).y = 240
    segi3a = CreatePolygonRgn(bintang1(1), ns3a, ALTERNATE)


    nBtg = 3
    bintang2(1).x = 270
    bintang2(1).y = 200
    bintang2(2).x = 220
    bintang2(2).y = 320
    bintang2(3).x = 320
    bintang2(3).y = 320
    btg2 = CreatePolygonRgn(bintang2(1), ns3a, ALTERNATE)
  nBtg3 = 3
    bintang3(1).x = 220
    bintang3(1).y = 320
    bintang3(2).x = 320
    bintang3(2).y = 320
    bintang3(3).x = 270
    bintang3(3).y = 290
    btg3 = CreatePolygonRgn(bintang3(1), nBtg3, ALTERNATE)
    
    'Yin & Yang
    yinyang = CreateEllipticRgn(600, 300, 700, 400)
    yin = CreateEllipticRgn(630, 340, 680, 410)
    yin1 = CreateRectRgn(580, 300, 645, 400)
    yang = CreateEllipticRgn(630, 300, 680, 350)
    
    'penghalus lengkungan
    npl = 3
    pl(1).x = 415
    pl(1).y = 195
    pl(2).x = 430
    pl(2).y = 195
    pl(3).x = 440
    pl(3).y = 215
    p_l = CreatePolygonRgn(pl(1), npl, ALTERNATE)
npel = 3
    pel(1).x = 424
    pel(1).y = 382
    pel(2).x = 428
    pel(2).y = 375
    pel(3).x = 440
    pel(3).y = 392
    pe_l = CreatePolygonRgn(pel(1), npel, ALTERNATE)
npele = 3
    pele(1).x = 420
    pele(1).y = 420
    pele(2).x = 428
    pele(2).y = 400
    pele(3).x = 440
    pele(3).y = 433
    pe_le = CreatePolygonRgn(pele(1), npele, ALTERNATE)
CombineRgn a0, a0, a1, 2
    
    CombineRgn a0, a0, a3, 4
    
    CombineRgn a0, a0, a5, 2
    CombineRgn a0, a0, a6, 4
    CombineRgn a0, a0, a7, 2
    CombineRgn a0, a0, a8, 4
    CombineRgn a0, a0, a9, 2
    
    CombineRgn a0, a0, a100, 2
    
    CombineRgn a0, a0, a10, 2
    CombineRgn a0, a0, a4, 4
    CombineRgn a0, a0, b1, 4
    
    CombineRgn a0, a0, b4, 4
    CombineRgn a0, a0, b5, 2
    
    CombineRgn a0, a0, b2, 4
    CombineRgn a0, a0, b3, 2
    CombineRgn a0, a0, a2, 4
    CombineRgn a0, a0, b6, 2
    CombineRgn a0, a0, b7, 4
    CombineRgn a0, a0, b8, 4
    CombineRgn a0, a0, kotak_a, 4
    CombineRgn a0, a0, kotak_b, 4
    CombineRgn a0, a0, circle_a, 4
    CombineRgn a0, a0, circle_b, 4
    CombineRgn a0, a0, elips_a, 4
    CombineRgn a0, a0, elips_b, 4
    CombineRgn a0, a0, segi3a, 4
    CombineRgn a0, a0, btg2, 4
    CombineRgn a0, a0, btg3, 2
    CombineRgn a0, a0, yinyang, 4
    CombineRgn a0, a0, yin, 2
    CombineRgn a0, a0, yin1, 2
    CombineRgn a0, a0, yang, 4
    CombineRgn a0, a0, p_l, 4
    CombineRgn a0, a0, pe_l, 2
    CombineRgn a0, a0, pe_le, 4
    SetWindowRgn Me.hwnd, a0, True


Caranya, buat form kotak seperti biasa. Lalu dipotong dengan bentuk oval di kanan atas dan kiri bawah supaya terlihat melengkung ke dalam.
Kemudian tambahkan oval di kiri atas dan kanan bawah agar terlihat melengkung ke luar.
Selanjutnya terserah kreasi Anda, masak harus saya jelaskan detail. 
Coba dulu doong...baru tanya kalau kurang jelas. Bikin kotaknya? Bikin bintang? Bikin tanda koma besar??
Disambung lain kali ya..

Tidak ada komentar:

Posting Komentar