Senin, 15 April 2013

Virus pada komputer

Virus komputer adalah Aplikasi atau program pada komputer yang bisa merusak program suatu komputer atau pun juga dapat merusak data dokumen yang terdapat pada komputer. 
      Komputer adalah suatu alat yang kemampuannya dikendalikan oleh software. Banyak jenis software yang tersedia, termasuk virus salah satunya. Sayang sekali jenis software ini hampir seluruhnya berdampak merugikan jika computer tertular virus. Virus computer memiliki berbagai kemampuan dasar di antaranya memanipulasi dan memperbanyak diri.
    Virus bekerja dengan memanfaatkan fungsi-fungsi sistem operasi yang tersembunyi dan juga memanfaatkan celah-celah yang ada pada program tertentu. Seseorang yang ingin membuat virus memerlukan pengetahuan tentang bagaimana sistem komputer bekerja dan kemampuan pemrograman.

Virus komputer dapat dikelompokkan ke dalam kategori sebagai berikut:
  • Worm- Menduplikatkan dirinya sendiri pada harddisk. Ini membuat sumber daya komputer (Harddisk) menjadi penuh akan worm itu.
  • Trojan- Mengambil data pada komputer yang telah terinfeksi dan mengirimkannya pada pembuat trojan itu sendiri.
  • Backdoor- Hampir sama dengan trojan. Namun, Backdoor bisanya menyerupai file yang baik-baik saja. Misalnya game.
  • Spyware - Virus yang memantau komputer yang terinfeksi.
  • Rogue- merupakan program yang meniru program anti virus dan menampilkan aktivitas layaknya antivirus normal, dan memberikan peringatan-peringatan palsu tentang adanya virus.
  • Rootkit- Virus yang bekerja menyerupai kerja sistem komputer yang biasa saja.
  • Polymorphic Virus- Virus yang gemar beubah-ubah agar tidak dapat terdeteksi.
  • Metamorphic Virus- Virus yang mengubah pengkodeannya sendiri agar lebih sulit dideteksi.

A. Jenis-jenis virus computer
1. Berdasarkan Teknik Pembuatannya
a. Virus yang Dibuat dengan Kompiler
Adalah virus yang dapat dieksekusi karena merupakan virus yang telah di compile sehingga menjadi dapat dieksekusi langsung. Virus jenis ini adalah virus yang pertama kali muncul di dunia komputer, dan sampai sekarang terus berkembang pesat. Biasanya virus jenis ini dibuat dengan bahasa pemrograman tingkat rendah yang disebut dengan assembler, karena dengan menggunakan assembler program yang dihasilkan lebih kecil dan cepat, sehingga sangat cocok untuk membuat virus. Mungkin virus jenis ini adalah virus yang paling sulit untuk dibuat tetapi karena dibuat dengan menggunakan bahasa pemrograman dan berbentuk bahasa mesin maka keunggulan dari virus ini adalah mampu melakukan hampir seluruh manipulasi yang mana hal ini tidak selalu dapat dilakukan oleh virus jenis lain karena lebih terbatas.

b. Virus Makro
Sebenarnya virus Macro adalah virus yang memanfaatkan fasilitas pemrograman modular pada suatu program aplikasi tertentu seperti Microsoft Word, Microsoft Excel, Microsoft PowePoint, Corel WordPerfect, dan sebagainya. Tujuan dari fasilitas pemrograman modular ini adalah untuk memberikan suatu kemudahan serta membuat jalan pintas bagi aplikasi tersebut.

c. Virus Script/ Batch
Lebih dikenal dengan virus batch karena dulu terdapat pada file batch yang terdapat pada DOS, sekarang hal ini telah berganti menjadi script. Virus script biasanya sering didapat dari Internet karena kelebihannya yang fleksibel dan bisa berjalan pada saat kita bermain internet, virus jenis ini biasanya menumpang pada file HTML (Hype Text Markup Language) dibuat dengan menggunakan fasilitas script seperti Javascript, VBscript,4 maupun gabungan antara script yang mengaktifkan program Active-X dari Microsoft Internet Explorer.

2. Berdasarkan Cara Kerja
a. Virus Boot Sector
Virus Boot Sector adalah virus yang memanfaatkan gerbang hubungan antara komputer dan media penyimpan sebagai tempat untuk menularkan virus. Apabila pada boot sector terdapat suatu program yang mampu menyebarkan diri dan mampu tinggal di memory selama komputer bekerja. Virus boot sector terbagi dua yaitu virus yang menyerang disket dan virus yang menyerang disket dan tabel partisi.

b. Virus File
Virus file merupakan virus yang memafaatkan suatu file yang dapat diproses langsung pada editor DOS, seperti file berekstensi COM, EXE, beberapa file overlay, dan file BATCH. Virus umumnya tidak memiliki kemampuan untuk menyerang di semua file tersebut. Virus file juga dikelompokkan berdasarkan dapat atau tidaknya tingga di memory.

c. Virus System
Virus sistem merupakan virus yang memanfaatkan file-file yang dipakai untuk membuat suatu sistem komputer. Contohnya adalah file dengan berekstensi SYS, file IBMBIO.COM, IBMDOS.COM, atau COMMAND.COM.

d. Virus Hybrid
Virus ini merupakan virus yang mempunyai dua kemampuan biasanya dapat masuk ke boot sector dan juga dapat masuk ke file. Salah satu contoh virus ini adalah virus Mystic yang dibuat di Indonesia.

e. Virus Registry Windows
Virus ini menginfeksi operating system yang menggunakan Windows 95/98/NT biasanya akan mengadakan infeksi dan manipulasi pada bagian registry Windows sebab registry adalah tempat menampung seluruh informasi komputer baik hardware maupun software. Sehingga setiap kali kita menjalankan Windows maka virus akan dijalankan oleh registry tersebut.

f. Virus Program Aplikasi
Virus ini merupakan virus Macro, menginfeksi pada data suatu program aplikasi tertentu. Virus ini baru akan beraksi apabila kita menjalankan program aplikasi tersebut dan membuka data yang mengandung virus.

3. Berdasarkan media penyebarannya
a. Penyebaran dengan media fisik
Media yang dimaksudkan bisa dengan disket, CD-ROM (Compact Disc Read Only Memory), harddisk, dan sebagainya. Untuk CD-ROM, walaupun media ini tidak dapat dibaca tetapi ada kemungkinan suatu CD-ROM mengandung virus tertentu, walaupun kemungkinannya kecil, tetapi seiring dengan berkembangnya alat CD-R/CD-RW yang beredar dipasaran maka kemungkinan adanya virus didalam CD-ROM akan bertambah pula. Untuk saat ini virus jenis ini yang menjadi dominan dari seluruh virus yang ada. Virus ini akan menular pada komputer yang masih belum tertular apabila terjadi pengaksesan pada file/media yang mengandung virus yang diikuti dengan pengaksesan file/media yang masih bersih, dapat juga dengan mengakes file/media yang masih bersih sedangkan di memori komputer terdapat virus yang aktif.

b. Penyebaran dengan Media Internet
Akhir-akhir ini virus yang menyebar dengan media sudah semakin banyak, virus ini biasanya menyebar lewat e-mail ataupun pada saat kita mendownload suatu file yang mengandung virus secara otomatis akan menyebarkan dirinya lewat e-mail apabila komputer memiliki hubungan ke jalur internet.

Sumber : http://www.google.com/url?sa=t&rct=j&q=virus%20pada%20komputer%3A%27pdf%27&source=web&cd=9&cad=rja&sqi=2&ved=0CHIQFjAI&url=http%3A%2F%2Fwww.geocities.ws%2Fkang-malik%2Fdok%2FMakalah%2Btentang%2Bvirus%2BKomputer.pdf&ei=ULhrUYqHLYnOrQfUnYDIBQ&usg=AFQjCNEIW-0vy25Rn-ZRhyo5WSsDwryDYQ&bvm=bv.45175338,d.bmk

Cybercrime

"CyberCrime" → kejahatan melalui jaringan Internet:
Contohnya :
  • pencurian kartu kredit
  • hacking situs
  • menyadap transmisi data orang lain
  • memanipulasi data dengan cara menyiapkan perintah yang tidak dikehendaki ke dalam program komputer
Cybercrime dapat didefinisikan sebagai perbuatan melawan hukum yang dilakukan dengan menggunakan internet yang berbasis pada kecanggihan teknologi
komputer dan telekomunikasi.

A. Karakteristik Cybercrime
  • Ruang lingkup kejahatan
  • Sifat kejahatan
  • Pelaku kejahatan
  • Modus Kejahatan
  • Jenis kerugian yang ditimbulkan
B. Jenis Cybercrime
1. Unauthorized Access
Merupakan kejahatan yang terjadi ketika seseorang memasuki atau menyusup kedalam suatu sistem jaringan komputer secara tidak sah, tanpa izin, atau tanpa sepengetahuan dari pemilik sistem jaringan komputer yang dimasukinya. Contoh: Probing dan port

2. Illegal Contents
Merupakan kejahatan yang dilakukan dengan memasukkan data atau informasi ke internet tentang suatu hal yang tidak benar, tidak etis, dan dapat dianggap melanggar hukum atau menggangu ketertiban umum. Contoh: penyebaran pornografi

3. Penyebaran virus secara sengaja
Penyebaran virus pada umumnya dilakukan dengan menggunakan email. Sering kali orang yang sistem emailnya terkena virus tidak menyadari hal ini. Virus ini kemudian dikirimkan ke tempat lain melalui emailnya.

4. Data Forgery
Kejahatan jenis ini dilakukan dengan tujuan memalsukan data pada dokumendokumen penting yang ada di internet Dokumen-dokumen ini biasanya dimiliki oleh institusi atau lembaga yang memiliki situs berbasis web database.

5. Cyber Espionage, Sabotage,and Extortion.
a. Cyber Espionage merupakan kejahatan yang memanfaatkan jaringan internet untuk melakukan kegiatan mata-mata terhadap pihak lain, dengan memasuki sistem jaringan komputer pihak sasaran.
b. Sabotage and Extortion merupakan jeniskejahatan yang dilakukan dengan membuat gangguan, perusakan atau penghancuran terhadap suatu data, program komputer atau sistem jaringan komputer yang terhubung dengan internet.

6. Cyberstalking
Kejahatan jenis ini dilakukan untuk mengganggu atau melecehkan seseorang dengan memanfaatkan komputer, misalnya menggunakan e-mail dan dilakukan berulangulang. Kejahatan tersebut menyerupai teror yang ditujukan kepada seseorang dengan memanfaatkan media internet

7. Carding
Carding merupakan kejahatan yang dilakukan untuk mencuri nomor kartukredit milik orang lain dan digunakan dalam transaksi perdagangan di internet.

8. Hacking dan Cracker
Istilah hacker biasanya mengacu pada seseorang yang punya minat besar untuk mempelajari sistem komputer secara detail dan bagaimana meningkatkan kapabilitasnya. Adapun mereka yang sering melakukan aksi-aksiperusakan di internet lazimnya disebut cracker → cracker adalah hacker yang yang memanfaatkan kemampuannya untuk hal-hal yang negatif. Aktivitas cracking di internet memiliki lingkup yang sangat luas, mulai dari pembajakan account milik orang lain,pembajakan situs web, probing, menyebarkan virus, hingga pelumpuhan target sasaran.

Tindakan yang terakhir disebut sebagai DoS (Denial Of Service) → merupakan serangan yang bertujuan melumpuhkan target (hang, crash) sehingga tidak dapat memberikan layanan.

9. Cybersquatting and Typosquatting
o Cybersquatting merupakan kejahatan yang dilakukan dengan mendaftarkan domain nama perusahaan orang lain dan kemudian berusaha menjualnya kepada perusahaan tersebut dengan harga yang lebih mahal.
o Typosquatting adalah kejahatan dengan membuat domain plesetan yaitu domain yang mirip dengan nama domain orang lain, yang merupakan nama domain saingan perusahaan.

10. Hijacking
Hijacking merupakan kejahatan melakukan pembajakan hasil karya orang lain Yang paling sering terjadi adalahSoftware Piracy (pembajakan perangkat lunak).

11. Cyber Terorism
Suatu tindakan cybercrime termasuk cyber terorism jika mengancam pemerintah atau warganegara, termasuk cracking ke situs pemerintah atau militer. Beberapa contoh kasus Cyber Terorism sebagai berikut:
  •  Ramzi Yousef, dalang penyerangan pertama ke gedung WTC, diketahui menyimpan detail serangan dalam file yang di enkripsi di laptopnya.
  • Osama Bin Laden diketahui menggunakan steganography untuk komunikasi jaringannya.
  • Suatu website yang dinamai Club Hacker Muslim diketahui menuliskan daftar tip untuk melakukan hacking ke Pentagon.
  • Seorang hacker yang menyebut dirinya sebagai DoktorNuker diketahui telah kurang lebih lima tahun melakukan defacing atau mengubah isi halaman web dengan propaganda anti-American, anti-Israel dan pro-Bin Laden.

Sabtu, 26 Januari 2013

Contoh Proses Bisnis Dalam Sistem Informasi

Sistem Informasi (SI) adalah suatu kesatuan yang terdiri dari manusia, perangkat keras, piranti lunak, jaringan komunikasi dan sumber daya data yang mengumpulkan, mentransformasi dan mendistribusikan informasi di dalam suatu organisasi.

Teknologi Informasi (TI) adalah perangkat keras, piranti lunak telekomunikasi, manajemen basis data dan teknologi lainnya yang digunakan dalam Sistem Informasi.
Teknologi Informasi mempengaruhi proses perusahaan dalam melakukan transaksi bisnis.
Contoh : dalam dunia perbankan, penggunaan ATM

Persaingan bisnis yang semakin kompetitif dan semakin meningkat pesat perkembanganya yaitu pangsa pasar perkembangan sistem informasi yang seakan akan kita menjual serba ada karena bukan hanya produk yang ditawarkan melainkan jasa yang yang dibuat oleh para programmer. Masalah yang sering kali terjadi adalah perusahaan gagal atau terlambat dalam merespon tantangan bisnis yang muncul secara tidak terduga. Sebagai contoh: banyak perusahaan sangat lambat dalam mendeteksi adanya peluang-peluang bisnis baru serta dalam mendeteksi pergerakan yang dilakukan oleh kompetitor; lebih jauh lagi adalah perusahaan kadang cenderung mempunyai sifat reaktif dan tidak dapat mendeteksi masalah secara dini, dimana ini merupakan hal yang sangat kontraproduktif bagi perusahaan dalam menghadapi perkembangan bisnis di masa seperti sekarang ini.

Adapun Sistem Informasi yang terdiri dari :
Sistem fungsional, sistem penjualan dan pemasaran sistem manufaktur dan produksi, sistem keuangan dan akutansi serta sistem sumber daya manusia.
• Tidak ada sistem informasi tunggal faktanya, perusahaan berskala menengah dan besar memiliki ribuan program komputer dan ratusan sistem yang berbeda.

AKTIVITAS DALAM BERBISNIS ADALAH : 

• Aktivitas bisnis adalah Aktivitas kerja dari bahan baku, informasi, dan pengetahuan seperangkat aktivitas. Contohnya proses memperkerjakan karyawan.
• Aktivitas bisnis memperkerjakan dapat diuraiakan sebagai berikut:
• Membuat periklanan tempat, 
• mengujungi agen pekerjaan, 
• mengumpulkan surat lamaran, 
• memeriksa surat lamaran, 
• mewawancarai kandidat, 
• mengevaluasi kandidat 
• membuat keputusan kepegawaian,
• melibatkan karyawan pada sistem kepegawaian seperti penggajian, kesehatan, dan pensiun. 


Sistem bisnis informasi yang terdiri dari :

• Fungsi dari sistem informasi ini juga meliputi sistem sumber daya manusianya itu sendiri kita diharuskan mebngkaji SDM yang ada dilingkungan kerja kita

Mengapa dunia bisnis butuh IT dan SI? 
 Sistem Informasi memainkan tiga peran penting dalam organisasi yaitu:
*                  Mendukung kegiatan operasi bisnis perusahaan
*                  Mendukung Pengambilan keputusan manajerial
*                  Mendukung pencapaian keunggulan kompetitif strategis 


Sumber : http://sigitbayunugroho.blogspot.com/

Mendeteksi Dan Mencegah Infeksi Virus


Resiko infeksi virus dapat dikurangi seminimal mungkin dengan menerapkan satu set langkah-langkah  keamanan yang relatif sederhana :
  • Mengakses tidak sah ke mesin dan perangkat lunak harus dibatasi sejauh mungkin.
  • Mesin dan perangkat lunak harus diperiksa secara teratur dengan program deteksi virus.
  • Semua disk baru dan perangkat lunak yang berasal dari sumber luar harus diperiksa dengan program deteksi virus sebelum digunakan.
  • Disket setelah menulis harus disimpan dan dilindungi bila memungkinkan karena secara fisik tidak mungkin bagi virus untuk menyalin dirinya ke disk yang dilindungi.
  • Backup rutin data dan file program harus dilakukan untuk meminimalkan kerusakan yang disebabkan jika virus menginfeksi sistem.
Scanner virus dimaksudkan untuk mendeteksi dan kemudian dengan aman menghapus program virus dari sistem komputer. Metode deteksi yang paling umum digunakan oleh program ini melibatkan pemindaian untuk tanda tangan virus tertentu. Hal ini sering memungkinkan untuk menemukan virus hanya dengan mencari setiap file pada disk yang terinfeksi untuk mengidentifikasi karakteristik. Namun, karena virus baru sering cukup ditemukan, daftar tanda tangan yang terkandung dalam program deteksi cepat menjadi tanggal. Untuk alasan ini, pengembang perangkat lunak yang paling bersikeras bahwa meng-update program reguler sangat penting. Namun, pengenalan jenis baru dari virus, seperti virus polimorfik dan stealth, berarti bahwa tanda tangan memeriksa sendiri tidak bisa lagi dianggap sebagai metode sama sekali aman dari deteksi. Untuk alasan ini scanner virus menggunakan kombinasi teknik untuk meningkatkan efisiensi mereka. Diantara metode yang digunakan adalah checksum, pengamanan virus, anti-virus, heuristik dan inokulasi. Pengamanan virus TSR program yang terus-menerus memantau dan mengontrol akses ke perangkat penyimpanan sistem. Setiap usaha yang tidak biasa untuk memodifikasi file atau menulis ke disk drive akan mengaktifkan pesan yang meminta pengguna untuk mengotorisasi operasi. Sebuah tugas serupa dilakukan oleh alat deteksi hardware virus. Perangkat keras modern perlindungan bisa sangat canggih, menampilkan prosesor mereka sendiri, kontroler disk dan komponen mahal lainnya. Namun, meskipun klaim produsen perangkat ini, ada sedikit bukti yang menunjukkan bahwa mereka adalah setiap lebih efektif daripada solusi perangkat lunak. Setelah virus telah terdeteksi ada tiga metode untuk menghapus itu. disinfeksi, pertama, mencoba untuk mengembalikan file yang rusak dan struktur direktori ke kondisi asli mereka. Namun, disinfeksi tidak mungkin dalam semua kasus. Teknik kedua melibatkan Timpa program virus sehingga secara permanen dan tidak dapat dibatalkan dihapus dari disk. Metode ketiga dan terakhir untuk menghilangkan virus ini dengan mengembalikan cadangan dari disk yang terinfeksi ke sistem. Proses penulisan file ke disk efektif menimpa virus dan mengembalikan sistem ke keadaan otiginal nya. Meskipun kecanggihan program pemindaian, tidak ada yang mampu menawarkan terhadap resiko infeksi perlindungan lengkap. Banyak tes telah dilakukan untuk menentukan efisiensi spesifik virus scanning program. dalam semua tes, tidak ada program yang belum tercapai nilai sempurna.


Jumat, 06 Juli 2012

Buat Karakter Game dengan HTML5 dan JavaScript - Bagian 2

Dalam Bagian 2 kita akan memberikan karakter kita kemampuan untuk melompat.

Contoh di bawah ini menunjukkan karakter kita semakin dilempari bola merah kecil. Obat hanya akan melompat. Klik tombol lompat di bawah ini untuk menyelamatkannya dari monoton Sisyphean nya.

Apa sebuah Navigasi? 
Berikut ini adalah contoh dari karakter sebelum dan selama melompat. Ada enam perbedaan. Dapatkah Anda melihat mereka?

Perbedaan:
  • Lengan kiri diputar.
  • Lengan kanan diputar.
  • Kaki kiri sedikit.
  • Kaki kanan ditarik kembali
  • Posisi karakter lebih tinggi.
  • Bayangan itu lebih kecil.
Save State
Kami membuat variabel untuk menyimpan kondisi karakter melompat kami.
var jumping = false;
Kami menginisialisasi variabel melompat ke false
Kami membuat lompatan fungsi yang hanya akan mengubah keadaan jika belum melompat.
function jump() {
                        
  if (!jumping) {
    jumping = true;
    setTimeout(land, 500);
  }
}
Fungsi Thejump pertama memeriksa nilai dari variabel melompat. Jika jumping benar maka lakukan apa-apa karena melompat sedang berlangsung. Jika jumping adalah palsu kemudian mengatur variabel melompat ke benar dan memanggil fungsi tanah setelah 500 miliseconds (0,5 detik).
Fungsi lahan akan berakhir lompat.
function land() {
                        
  jumping = false;
}
Fungsi tanah hanya menetapkan variabel melompat ke false.

Baru Langsung Gambar
Keadaan melompat akan membutuhkan gambar 3 gambar baru. Kami menciptakan mereka seperti yang kami lakukan di Bagian 1 dan menyimpannya sebagai PNGs transparan.
Character Jump Outline
var totalResources = 9;

loadImage("leftArm-jump");
loadImage("legs-jump");
loadImage("rightArm-jump");
Kami kenaikan totalResources variabel dengan 3 dan memuat tiga gambar baru yang memiliki "-melompat" ditambahkan ke file mereka nama.

redraw
Sekarang kita memperbarui fungsi redraw kita buat dalam Bagian 1 untuk mencerminkan keadaan lompatan baru.
function redraw() {

  var x = charX;
  var y = charY;
  var jumpHeight = 45;
  
  canvas.width = canvas.width; // clears the canvas 

  // Draw shadow
  if (jumping) {
    drawEllipse(x + 40, y + 29, 100 - breathAmt, 4);
  } else {
    drawEllipse(x + 40, y + 29, 160 - breathAmt, 6);
  }
  
  if (jumping) {
    y -= jumpHeight;
  }

  if (jumping) {
    context.drawImage(images["leftArm-jump"], x + 40, y - 42 - breathAmt);
  } else {
    context.drawImage(images["leftArm"], x + 40, y - 42 - breathAmt);
  }
  
  if (jumping) {
    context.drawImage(images["legs-jump"], x - 6, y );
  } else {
    context.drawImage(images["legs"], x, y);
  }
    
  context.drawImage(images["torso"], x, y - 50);
  context.drawImage(images["head"], x - 10, y - 125 - breathAmt);
  context.drawImage(images["hair"], x - 37, y - 138 - breathAmt);
  
  if (jumping) {
    context.drawImage(images["rightArm-jump"], x - 35, y - 42 - breathAmt);
  } else {
    context.drawImage(images["rightArm"], x - 15, y - 42 - breathAmt);
  }
  
  // Draw eyes
  drawEllipse(x + 47, y - 68 - breathAmt, 8, curEyeHeight);
  drawEllipse(x + 58, y - 68 - breathAmt, 8, curEyeHeight);
}
Kami menambahkan jumpHeight variabel baru yang adalah berapa banyak piksel karakter kita akan melompat.

Jika melompat dengan benar maka lakukan hal berikut:

  • Buatlah bayangan karakter yang lebih kecil.
  • Kenaikan posisi karakter y oleh tinggi melompat.
  • Buatlah versi melompat dari lengan dan kaki.
bekerja Contoh

Berikut ini adalah contoh kerja. Contoh kode yang tersedia untuk di-download di bawah ini.

Download Source Code


Related Articles


Sumber :

Buat Aplikasi Menggambar dengan HTML5 kanvas dan JavaScript


Tutorial ini akan membawa Anda langkah demi langkah melalui pengembangan sebuah aplikasi web sederhana dengan menggunakan gambar kanvas HTML5 dan JavaScript mitranya. Tujuan artikel ini adalah untuk mengeksplorasi proses membuat aplikasi sederhana di sepanjang jalan belajar:

Cara menggambar dinamis di atas kanvas HTML5

  1. Masa depan possiblities kanvas HTML5
  2. Kompatibilitas saat browser kanvas HTML5
  3. Setiap langkah termasuk demo bekerja, jika Anda ingin langsung beralih:
  • Sederhana Demo
  • Warna Demo
  • Ukuran Demo
  • Alat Demo
  • Garis Demo
  • Lengkap Demo
  • Tentukan Tujuan kami


Mari kita membuat aplikasi web di mana pengguna dinamis dapat menggambar pada kanvas HTML5. Apa yang akan pengguna kami digunakan? Sebuah buku mewarnai datang ke pikiran, yang berarti krayon. Alat pertama kami adalah krayon. Meskipun dunia nyata tidak setuju, saya pikir kita harus bisa menghapus krayon. Alat kedua kami akan menjadi penghapus (realitas maaf). Dan karena saya selalu telah menjadi Sharpie ® penggemar alat terakhir kami akan penanda.

Alat kami bisa menggunakan warna (kecuali mungkin penghapus kami). Mari kita tetap sederhana, sehingga kami memberikan pengguna kami 4 warna berbeda untuk memilih dari.

Demikian pula kita juga memberikan pengguna kami 4 ukuran yang berbeda untuk menggambar dengan, karena kita bisa. Untuk rekap app kita harus memiliki berikut ini:


  • 3 alat: krayon, spidol, penghapus
  • 4 warna untuk dipilih (kecuali penghapus)
  • 4 ukuran untuk memilih dari

Seperti buku mewarnai, mari kita memberikan sesuatu pengguna kami untuk "warna". Aku telah memilih favorit saya: Bebek Semangka oleh Rachel Cruthirds.

Siapkan HTML5 kanvas: Markup
Kita hanya perlu garis markup; segala sesuatu yang lain akan berada dalam scripting.



Tunggu ... HTML5 masih baru dan beberapa browser (pssst. .. itu berarti Anda Internet Explorer) tidak mendukung tag kanvas, jadi mari kita gunakan baris ini markup sebagai gantinya:



Siapkan HTML5 kanvas: Scripting
Untuk mempersiapkan kanvas kita, kita akan berharap untuk menggunakan:
context = document.getElementById('canvasInAPerfectWorld').getContext("2d");
Namun IE tidak tahu apa tag kanvas berarti, dan jika kita digunakan yang di markup kami, IE akan melayani kita dengan hidangan utama dari kesalahan. Sebaliknya, kita membuat elemen kanvas dalam JavaScript dan menambahkan ke div kita disebut canvasDiv.
var canvasDiv = document.getElementById('canvasDiv');
canvas = document.createElement('canvas');
canvas.setAttribute('width', canvasWidth);
canvas.setAttribute('height', canvasHeight);
canvas.setAttribute('id', 'canvas');
canvasDiv.appendChild(canvas);
if(typeof G_vmlCanvasManager != 'undefined') {
 canvas = G_vmlCanvasManager.initElement(canvas);
}
context = canvas.getContext("2d");
Untuk kompatibilitas Internet Explorer kita juga harus menyertakan script tambahan: ExplorerCanvas.

Buat Menggambar "kanvas" Sederhana
Sebelum kita menambahkan opsi apapun, mari kita menangani dasar-dasar dinamis menggambar pada sebuah kanvas HTML5. Ini akan terdiri dari 4 kejadian mouse dan dua fungsi: addClick untuk merekam data mouse dan redraw yang akan menarik data tersebut.

Mouse Down Event: Bila pengguna mengklik pada kanvas kami mencatat posisi dalam array melalui fungsi addClick. Kami mengatur cat boolean true (kita akan melihat mengapa dalam detik). Akhirnya kami memperbarui kanvas dengan fungsi redraw.
$('#canvas').mousedown(function(e){
  var mouseX = e.pageX - this.offsetLeft;
  var mouseY = e.pageY - this.offsetTop;
  
  paint = true;
  addClick(e.pageX - this.offsetLeft, e.pageY - this.offsetTop);
  redraw();
});
Gerakan mouse Event: Sama seperti bergerak ujung penanda pada selembar kertas, kita ingin menggambar di kanvas ketika pengguna menekan kita. Cat boolean akan membiarkan kami jika penanda virtual menekan kertas atau tidak. Jika cat benar, maka kami mencatat nilai. Kemudian redraw.
$('#canvas').mousemove(function(e){
  if(paint){
    addClick(e.pageX - this.offsetLeft, e.pageY - this.offsetTop, true);
    redraw();
  }
});
Mouse Up Event: Marker adalah dari kertas; boolean cat akan ingat!
$('#canvas').mouseup(function(e){
  paint = false;
});
Mouse Leave Event: Jika penanda berbunyi kertas, kemudian melupakan Anda!
$('#canvas').mouseleave(function(e){
  paint = false;
});
Berikut adalah fungsi addClick yang akan menyelamatkan posisi klik:
var clickX = new Array();
var clickY = new Array();
var clickDrag = new Array();
var paint;

function addClick(x, y, dragging)
{
  clickX.push(x);
  clickY.push(y);
  clickDrag.push(dragging);
}
Fungsi redraw adalah dimana keajaiban terjadi. Setiap kali fungsi ini dipanggil kanvas dibersihkan dan semuanya digambar ulang. Kami bisa lebih efisien dan redraw hanya aspek-aspek tertentu yang telah berubah, tapi mari kita tetap sederhana.

Kami menetapkan sifat stroke yang sedikit untuk warna, bentuk, dan lebar. Lalu untuk setiap kali kita dicatat sebagai penanda atas kertas kita akan menarik garis.
function redraw(){
  canvas.width = canvas.width; // Clears the canvas
  
  context.strokeStyle = "#df4b26";
  context.lineJoin = "round";
  context.lineWidth = 5;
   
  for(var i=0; i < clickX.length; i++)
  {  
    context.beginPath();
    if(clickDrag[i] && i){
      context.moveTo(clickX[i-1], clickY[i-1]);
     }else{
       context.moveTo(clickX[i]-1, clickY[i]);
     }
     context.lineTo(clickX[i], clickY[i]);
     context.closePath();
     context.stroke();
  }
}
Menggambar sederhana kanvas Demo

Cobalah:
Clear the canvas: 
Tambahkan Warna
Mari kita memberikan pengguna kami beberapa pilihan warna. Untuk melakukannya, semua yang perlu kita lakukan adalah menambahkan mendeklarasikan beberapa variabel global dan memperbarui redraw fungsi kita.

Deklarasi variabel empat warna: colorPurple, colorGreen, colorYellow, colorBrown dengan nilai warna hex yang sesuai, sebuah variabel untuk menyimpan warna saat ini: curColor, dan sebuah array untuk mencocokkan warna yang dipilih ketika pengguna mengklik kanvas clickColor.
var colorPurple = "#cb3594";
var colorGreen = "#659b41";
var colorYellow = "#ffcf33";
var colorBrown = "#986928";

var curColor = colorPurple;
var clickColor = new Array();
Fungsi addClick perlu diperbarui untuk merekam warna yang dipilih ketika pengguna mengklik.
function addClick(x, y, dragging)
{
  clickX.push(x);
  clickY.push(y);
  clickDrag.push(dragging);
  clickColor.push(curColor);
}
Karena warna dapat bervariasi saat ini, kami perlu memperbarui fungsi redraw jadi referensi warna yang aktif ketika pengguna diklik. Kami memindahkan baris tentang strokeStyle ke dalam untuk loop dan menetapkan ke nilai warna dalam clickColor array baru yang sesuai dengan clickage pengguna.
function redraw(){
  /* context.strokeStyle = "#df4b26"; */
  context.lineJoin = "round";
  context.lineWidth = 5;
   
  for(var i=0; i < clickX.length; i++)
  {  
    context.beginPath();
    if(clickDrag[i] && i){
      contex.moveTo(clickX[i-1], clickY[i-1]);
    }else{
      context.moveTo(clickX[i]-1, clickY[i]);
    }
    context.lineTo(clickX[i], clickY[i]);
    context.closePath();
    context.strokeStyle = clickColor[i];
    context.stroke();
  }
}
Demo Warna
Cobalah dengan pilihan warna:
  • Clear the canvas: 
  • Choose a color: 

Tambahkan Ukuran
Sama seperti kita menambahkan warna, mari kita tambahkan beberapa ukuran untuk memilih dari: "kecil", "normal", "besar", dan "besar".

Kami membutuhkan beberapa lebih variabel global: clickSize dan curSize.
var clickSize = new Array();
var curSize = "normal";
Fungsi addClick perlu diperbarui untuk mencatat ukuran dipilih bila pengguna mengklik.
function addClick(x, y, dragging)
{
  clickX.push(x);
  clickY.push(y);
  clickDrag.push(dragging);
  clickColor.push(curColor);
  clickSize.push(curSize);

}
Update fungsi redraw untuk menangani ukuran baru.
function redraw(){
  context.lineJoin = "round";
  class="highlight delete">/* context.lineWidth = 5; */
  for(var i=0; i < clickX.length; i++)
  {  
    context.beginPath();
    if(clickDrag[i] && i){
      context.moveTo(clickX[i-1], clickY[i-1]);
    }else{
      context.moveTo(clickX[i]-1, clickY[i]);
    }
    context.lineTo(clickX[i], clickY[i]);
    context.closePath();
    context.strokeStyle = clickColor[i];
    context.lineWidth = radius;
    context.stroke();
  }
}
Demo ukuran
Cobalah dengan berbagai ukuran:
  • Clear the canvas: 
  • Choose a color: 
  • Choose a size: 
Tambahkan Peralatan

Krayon, Marker, Eraser. Tiga alat. Mari kita jadikan mereka.

Dua variabel global yang kita butuhkan adalah: clickTool dan curTool.
var clickTool = new Array();
var curTool = "crayon";
Fungsi addClick perlu diperbarui untuk merekam alat dipilih ketika pengguna klik.
function addClick(x, y, dragging)
{
  clickX.push(x);
  clickY.push(y);
  clickDrag.push(dragging);
  if(curTool == "eraser"){
    clickColor.push("white");
  }else{
    clickColor.push(curColor);
  }
  clickColor.push(curColor);
  clickSize.push(curSize);
}
Update fungsi redraw untuk menangani alat-alat baru.
function redraw(){
  context.lineJoin = "round";
  for(var i=0; i < clickX.length; i++)
  {  
    context.beginPath();
    if(clickDrag[i] && i){
      context.moveTo(clickX[i-1], clickY[i-1]);
    }else{
      context.moveTo(clickX[i]-1, clickY[i]);
    }
    context.lineTo(clickX[i], clickY[i]);
    context.closePath();
    context.strokeStyle = clickColor[i];
    context.lineWidth = radius;
    context.stroke();
  }
  if(curTool == "crayon") {
    context.globalAlpha = 0.4;
    context.drawImage(crayonTextureImage, 0, 0, canvasWidth, canvasHeight);
  }
  context.globalAlpha = 1;
}
Demo Peralatan
Cobalah dengan alat yang berbeda:
  • Clear the canvas: 
  • Choose a color: 
  • Choose a size: 
  • Choose a tool: 
Tambahkan Outline
Buku mewarnai memberikan garis besar sesuatu untuk warna: anak anjing lucu atau kelinci melompat. Saya memilih bebek semangka.

Pertama mendeklarasikan outlineImage variabel.
var outlineImage = new Image();
Memuat gambar outline.
function prepareCanvas(){
  ...
  
  outlineImage.src = "images/watermelon-duck-outline.png";
}
Update fungsi redraw untuk menarik gambar garis besar menggunakan metode drawImage konteks kanvas itu. Parameternya adalah objek gambar yang kita dimuat, posisi kita ingin menggambar gambar, dan dimensi gambar.
function redraw(){
  ...
  
  context.drawImage(outlineImage, drawingAreaX, drawingAreaY, drawingAreaWidth, drawingAreaHeight);
}
Demo Garis Besar

Berikan coba:
  • Clear the canvas: 
  • Choose a color: 
  • Choose a size: 
  • Choose a tool: 
Akhir Rincian
Kita hampir sampai! Rincian ini terakhir adalah opsional: membatasi area gambar untuk persegi panjang di kanvas dan menggunakan sisa kanvas untuk gui kita (alias tombol).

Mari kita menutupi kanvas sehingga semua gambar adalah dalam area gambar. Kami menggunakan metode klip dengan menyimpan dan mengembalikan metode. Metode ini saat ini tidak didukung oleh Internet Explorer.
function redraw()
{
  ...
  
  context.save();
  context.beginPath();
  context.rect(drawingAreaX, drawingAreaY, drawingAreaWidth, drawingAreaHeight);
  context.clip();
  
  var radius;
  var i = 0;
  for(; i < clickX.length; i++)
  {
    ... 
  }
  context.restore();
  ...
} // end redraw function
Yang terakhir adalah untuk memindahkan semua tombol-tombol di atas kanvas kami. Ini melibatkan memuat gambar dan menampilkan mereka berdasarkan interaksi pengguna kami. Saya menggunakan teknik standar JavaScript jadi saya tidak akan membuat Anda bosan dengan rincian (tapi itu termasuk dalam kode sumber jika Anda tertarik). Dan di sana Anda memilikinya!

Lengkap Demo
Sekarang kita telah menciptakan sebuah aplikasi HTML5 kanvas menggambar, mari kita istirahat dan membuat gambar!

Complete Demo

Now that we have created an HTML5 canvas drawing app, lets take a break and draw!