Garis

Garis adalah sekumpulan piksel yang disorot pada tampilan raster (atau satu set titik pada halaman cetak) yang diidentifikasi oleh dua titik: titik awal dan titik akhir. Piksel yang terletak di titik awal selalu disertakan dalam garis, dan piksel yang terletak di titik akhir selalu dikecualikan. (Garis semacam ini kadang-kadang disebut inklusif-eksklusif.)

Saat aplikasi memanggil salah satu fungsi gambar baris, antarmuka perangkat grafis (GDI), atau dalam beberapa kasus driver perangkat, menentukan piksel mana yang harus disorot. GDI adalah pustaka tautan dinamis (DLL) yang memproses panggilan fungsi grafis dari aplikasi dan meneruskan panggilan tersebut ke driver perangkat. Driver perangkat adalah DLL yang menerima input dari GDI, mengonversi input ke perintah perangkat, dan meneruskan perintah tersebut ke perangkat yang sesuai. GDI menggunakan penganalisis diferensial digital (DDA) untuk menentukan kumpulan piksel yang menentukan garis. DDA menentukan kumpulan piksel dengan memeriksa setiap titik pada garis dan mengidentifikasi piksel tersebut pada permukaan tampilan (atau titik-titik pada halaman cetak) yang sesuai dengan titik. Ilustrasi berikut menunjukkan garis, titik awal, titik akhirnya, dan piksel yang disorot dengan menggunakan DDA sederhana.

ilustrasi memperlihatkan kisi piksel, titik awal dan akhir, garis, dan bayangan pada piksel yang berada di sepanjang garis

DDA yang paling sederhana dan paling umum adalah Bresenham, atau inkremental, DDA. Versi algoritma ini yang dimodifikasi menggambar garis di Windows. DDA bertambah bertahap dicatat karena kesederhanaannya, tetapi juga dicatat karena ketidakakuratannya. Karena membulatkan ke nilai bilangan bulat terdekat, terkadang gagal mewakili baris asli yang diminta oleh aplikasi. DDA yang digunakan oleh GDI tidak membulatkan ke bilangan bulat terdekat. Akibatnya, DDA baru ini menghasilkan output yang terkadang jauh lebih dekat dalam penampilan dengan baris asli yang diminta oleh aplikasi.

Catatan

Jika aplikasi memerlukan output baris yang tidak dapat dicapai dengan DDA baru, aplikasi dapat menggambar garisnya sendiri dengan memanggil fungsi LineDDA dan menyediakan DDA privat (LineDDAProc). Namun, fungsi LineDDA menggambar garis jauh lebih lambat daripada fungsi gambar garis. Jangan gunakan fungsi ini dalam aplikasi jika kecepatan menjadi perhatian utama.

 

Aplikasi dapat menggunakan DDA baru untuk menggambar satu baris dan beberapa segmen garis yang terhubung. Aplikasi dapat menggambar satu baris dengan memanggil fungsi LineTo . Fungsi ini menarik garis dari posisi saat ini ke atas, tetapi tidak termasuk, titik akhir yang ditentukan. Aplikasi dapat menggambar serangkaian segmen garis yang terhubung dengan memanggil fungsi Polyline , menyediakan array titik yang menentukan titik akhir dari setiap segmen garis. Aplikasi dapat menggambar beberapa seri segmen garis yang terhubung dan terputus-putus dengan memanggil fungsi PolyPolyline , memasok titik akhir yang diperlukan.

Ilustrasi berikut menunjukkan output baris yang dibuat dengan memanggil fungsi LineTo, Polyline, dan PolyPolyline .

ilustrasi memperlihatkan garis lurus, kotak berbentuk