2-7 Device context - Windows cung cấp 3 chức năng
Chức năng thứ nhất chúng ta đã biết là Window (cửa sổ).
Chức năng thứ hai là message (tin nhắn).
Và chức năng thứ ba là Device context. Đây chính là nội dung bài học lần này.
Device context-ngữ cảnh thiết bị: chứa các thông tin cần thiết cho việc vẽ lên Window hay Device (một thiết bị nào đó).
(Lời người dịch bổ sung thêm: Để có thể giao tiếp được với máy in, hay card đồ họa... Nhờ có Device context, bạn có thể truyền thông tin vẽ, thông tin này được phản ánh tới máy in).
Bạn cần đăng nhập để thấy link
:
Để hiển thị cùng một hình ảnh trên màn hình thì tùy vào phần cứng mà mỗi máy tính sẽ có cách thức cấu hình riêng biệt. Tuy nhiên, người lập trình ko phải lo về điều đó, bạn có thể đưa ra cách vẽ thông qua các tập lệnh thao tác trên DC (chẳng hạn LineTo, ArcTo, Polygon...), và hình ảnh nhận được sẽ gần như được đảm bảo là như nhau trên mọi thiết bị phần cứng hỗ trợ hệ điều hành Windows.
Cụ thể trên Windows có 4 cái Device Context là: Display, Print, memory,
Bạn cần đăng nhập để thấy link
.
Display | Vẽ lên màn hình hiển thị |
Print | Vẽ lên giấy của máy in |
Memory | Vẽ nên hình ảnh trên bộ nhớ để gửi tới thiết bị |
Metafile |
Bạn cần đăng nhập để thấy link
|
Nào, bây giờ hãy thử suy nghĩ xem tại sao Device context lại cần thiết như vậy.
Thực sự thì output của graphic không phải là thứ đơn giản mà chúng ta có thể tưởng tượng được.
Đầu tiên, mệnh lệnh điều khiển màn hình hiển thị hay máy in là khác nhau.
Ngoài ra, riêng về màn hình hiển thị cũng đã có vô số loại. Người dùng có thể tùy ý thiết định độ phân giải, màu sắc.
Với máy in thì câu chuyện cũng tương tự. Chúng ta cũng có rất nhiều loại máy in.
Cần phải sử dụng code như thế nào để có thể xuất ra đồ họa như nhau cho các thiết bị đủ các thể loại như thế kia?
Và thế là các thiết bị này và máy tính của chúng ta phải giao tiếp với nhau thông qua các hàm API. Đây chính là Device Context.
Chẳng hạn khi bạn mua máy in, đi kèm sẽ có đĩa CD-ROM. Chúng ta vẫn thường gọi là Device Driver hoặc ngắn gọn là Driver.
Nhờ có Device Context, chúng ta không phải quan tâm cấu trúc bên trong của chiếc máy in ra sao, code cho chúng như thế nào, chúng ta chỉ việc ra lệnh thông qua các hàm API để điều khiển các thiết bị này.