Tôi cần vẽ một đường dài một inch trên bất kỳ thiết bị nào được cung cấp một tham chiếu Graphics
cho nó. Tôi cần nó dài một inch bất kể những gì Transform
được đặt thành. Giả sử rằng hệ số chia tỷ lệ của phép biến đổi được đưa ra bởi scale
theo cả hướng ngang và dọc.GDI +: Làm cách nào để vẽ một đường dài một inch trên bất kỳ thiết bị nào được vẽ trên?
Một số mã C++/CLI:
g->DrawLine(Pens::Black, 50.0f, 50.0f, 50.0f + oneInchEquivalent/scale, 50.0f);
Bây giờ đó là không khó chút nào! Bây giờ tất cả những gì chúng ta cần làm là tính toán oneInchEquivalent
.
g->DpiX
cho tôi khoảng cách trông giống như một inch trên màn hình chứ không phải trên máy in. Dường như trên máy in, vẽ một đường gồm 100 đơn vị với g->PageUnit
được đặt thành GraphicsUnit :: Hiển thị sẽ cho tôi một dòng dài một inch. Nhưng, tôi thực sự cần điều này để làm việc bất kể cài đặt PageUnit
. Thực tế, việc thay đổi PageUnit
sẽ thay đổi chiều rộng của bút !!
Chỉnh sửa: Tôi đã tạm chấp nhận câu trả lời duy nhất ở đây vì nó khá gần với những gì tôi đang tìm kiếm.
Tôi đã cập nhật câu trả lời của mình ngay bây giờ với mẫu in –