Bagikan melalui


Jenis Sistem Koordinat

Windows GDI+ menggunakan tiga ruang koordinat: dunia, halaman, dan perangkat. Saat Anda melakukan panggilan myGraphics.DrawLine(&myPen, 0, 0, 160, 80), titik yang Anda berikan ke metode Graphics::D rawLine — (0, 0) dan (160, 80) — berada di ruang koordinat dunia. Sebelum GDI+ dapat menggambar garis di layar, koordinat melewati urutan transformasi. Satu transformasi mengonversi koordinat dunia menjadi koordinat halaman, dan transformasi lain mengonversi koordinat halaman menjadi koordinat perangkat.

Misalkan Anda ingin bekerja dengan sistem koordinat yang memiliki asalnya di tubuh area klien daripada sudut kiri atas. Misalnya, Anda ingin asal menjadi 100 piksel dari tepi kiri area klien dan 50 piksel dari bagian atas area klien. Ilustrasi berikut menunjukkan sistem koordinat seperti itu.

cuplikan layar jendela yang berisi sumbu koordinat berlabel

Saat Anda melakukan panggilan myGraphics.DrawLine(&myPen, 0, 0, 160, 80), Anda mendapatkan baris yang ditampilkan dalam ilustrasi berikut.

cuplikan layar jendela sebelumnya, tetapi dengan garis biru memanjang secara diagonal dari asal

Koordinat titik akhir baris Anda di tiga ruang koordinat adalah sebagai berikut:

Space Koordinat titik akhir
Dunia (0, 0) hingga (160, 80)
Halaman (100, 50) hingga (260, 130)
Perangkat (100, 50) hingga (260, 130)

 

Perhatikan bahwa ruang koordinat halaman memiliki asalnya di sudut kiri atas area klien; ini akan selalu terjadi. Perhatikan juga bahwa karena unit pengukuran adalah piksel, koordinat perangkat sama dengan koordinat halaman. Jika Anda mengatur unit pengukuran ke sesuatu selain piksel (misalnya, inci), maka koordinat perangkat akan berbeda dari koordinat halaman.

Transformasi yang memetakan koordinat dunia ke koordinat halaman disebut transformasi dunia dan dikelola oleh objek Grafis . Dalam contoh sebelumnya, transformasi dunia adalah terjemahan 100 unit ke arah x dan 50 unit ke arah y. Contoh berikut mengatur transformasi dunia objek Grafis lalu menggunakan objek Grafis tersebut untuk menggambar garis yang diperlihatkan pada gambar sebelumnya.

myGraphics.TranslateTransform(100.0f, 50.0f);

myGraphics.DrawLine(&myPen, 0, 0, 160, 80);

Transformasi yang memetakan koordinat halaman ke koordinat perangkat disebut transformasi halaman. Kelas Grafis menyediakan empat metode untuk memanipulasi dan memeriksa transformasi halaman: Graphics::SetPageUnit, Graphics::GetPageUnit, Graphics::SetPageScale, dan Graphics::GetPageScale. Kelas Grafis juga menyediakan dua metode, Graphics::GetDpiX dan Graphics::GetDpiY, untuk memeriksa titik horizontal dan vertikal per inci perangkat tampilan.

Anda dapat menggunakan metode Graphics::SetPageUnit dari kelas Grafis untuk menentukan satuan ukuran. Contoh berikut menggambar garis dari (0, 0) ke (2, 1) di mana titik (2, 1) adalah 2 inci ke kanan dan 1 inci ke bawah dari titik (0, 0).

myGraphics.SetPageUnit(UnitInch);

myGraphics.DrawLine(&myPen, 0, 0, 2, 1);

Catatan

Jika Anda tidak menentukan lebar pena saat membuat pena, contoh sebelumnya akan menggambar garis dengan lebar satu inci. Anda dapat menentukan lebar pena dalam argumen kedua ke konstruktor Pena :

Pen myPen(Color(255, 0, 0, 0), 1/myGraphics.GetDpiX()).

 

Jika kita berasumsi bahwa perangkat tampilan memiliki 96 titik per inci dalam arah horizontal dan 96 titik per inci ke arah vertikal, titik akhir garis dalam contoh sebelumnya memiliki koordinat berikut dalam tiga ruang koordinat:

Space Koordinat titik akhir
Dunia (0, 0) hingga (2, 1)
Halaman (0, 0) hingga (2, 1)
Perangkat (0, 0, hingga (192, 96)

 

Anda dapat menggabungkan transformasi dunia dan halaman untuk mencapai berbagai efek. Misalnya, Anda ingin menggunakan inci sebagai unit pengukuran dan Anda ingin asal sistem koordinat Anda menjadi 2 inci dari tepi kiri area klien dan 1/2 inci dari bagian atas area klien. Contoh berikut mengatur transformasi dunia dan halaman objek Grafis lalu menggambar garis dari (0, 0) ke (2, 1).

myGraphics.TranslateTransform(2.0f, 0.5f);
myGraphics.SetPageUnit(UnitInch);
myGraphics.DrawLine(&myPen, 0, 0, 2, 1);

Ilustrasi berikut menunjukkan garis dan sistem koordinat.

cuplikan layar jendela sebelumnya, tetapi lebih lebar, dengan sumbu diposisikan ke kiri dan diberi label secara berbeda

Jika kita berasumsi bahwa perangkat tampilan memiliki 96 titik per inci dalam arah horizontal dan 96 titik per inci ke arah vertikal, titik akhir garis dalam contoh sebelumnya memiliki koordinat berikut dalam tiga ruang koordinat:

Space Koordinat titik akhir
Dunia (0, 0) hingga (2, 1)
Halaman (2, 0,5) hingga (4, 1,5)
Perangkat (192, 48) hingga (384, 144)