Làm thế nào để vẽ một pixel trong một thiết bị đầu cuối?


10

Cho đến bây giờ tôi đã sử dụng các ký tự để vẽ hình ảnh, hình dạng vv trong một thiết bị đầu cuối.

Có thể vẽ một pixel không?

Hãy cùng nói nào:

foo 1 1 red

Điều này sẽ vẽ một pixel màu đỏ tại tọa độ (1, 1).

Có một ứng dụng hiện có sẽ làm công việc này?

Hiện đang chạy Ubuntu 14.04.


3
Bạn có loại thiết bị đầu cuối nào? Một chiếc GT GT40 ?
Anthon

@Anthon Gnome-Terminal (đi kèm với Ubuntu)
Ionică Bizău

1
@Anthon A DEC GT40sẽ hữu ích, nhưng nó quá đắt ... :-)
Ionică Bizău

1
@terdon Tôi đã bỏ phiếu để mở lại vì đây thực chất không phải là một câu hỏi lập trình (tôi đã xóa thẻ cc ++ , vì nếu bạn sẽ viết mã C hoặc C ++, thì đó là ngoài chủ đề ở đây). Không có tính năng nào như vậy, bạn cần lập trình nó. Đây sẽ là một câu trả lời thích hợp ở đây - ngoại trừ việc nó sai: một câu trả lời hay sẽ đề cập đến Tektronix và vẽ qua cửa sổ đầu cuối như w3m.
Gilles 'SO- ngừng trở nên xấu xa'

1
@Gilles đủ công bằng, tôi đã mở lại. Tôi đã đóng cửa vì nó đang trong quá trình di chuyển sang SO và nó không được chào đón ở đó.
terdon

Câu trả lời:


10

Thiết bị đầu cuối là màn hình ô ký tự và không hỗ trợ vẽ đồ họa pixel. Ngay cả khi chạy trong X11; mặc dù chắc chắn có thể vẽ từng pixel khi nói chuyện trực tiếp với máy chủ X, nếu chương trình của bạn đang nói chuyện với thiết bị đầu cuối, nó chỉ có thể yêu cầu thiết bị đầu cuối hiển thị các ký tự.

Để hiển thị đồ họa thay vì văn bản, bạn sẽ cần viết chương trình tương tác trực tiếp với máy chủ X. Điều này thường được thực hiện thông qua thư viện bộ công cụ UI như GTK , Qt hoặc wxWidgets .


7
Có tất cả các loại thiết bị đầu cuối, một số có khả năng đồ họa (như chế độ Tektronix xtermhoặc nhúng hình ảnh của terminology). Lưu ý rằng thiết bị đầu cuối cũng đề cập đến thiết bị đầu cuối X11 (kế thừa của những thứ như thiết bị Tektronix)
Stéphane Chazelas

2
Mát mẻ! Một số người đam mê vẽ ấm trà 3d trong xterm =) dim13.org/2009/02/tellow
gena2x

Nếu thiết bị đầu cuối chỉ có thể "vẽ" ký tự, thì có lẽ pixel nên được tạo thành char để nó có thể được vẽ ...

10

Có một cái nhìn vào thư viện Drawille . Nó sử dụng các ký tự chữ nổi UTF để vẽ pixel.


1
Trong khi về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo.
slm

1

Bạn sẽ không thể vẽ các màu pixel đơn lẻ trong thiết bị đầu cuối trừ khi bạn có thể thực hiện những gì đề cập của Wyzard , tự lập trình hoặc tìm một công cụ đã được tạo cho công việc (đây có thể là thiết bị đầu cuối cụ thể). Tuy nhiên, có thể sử dụng tọa độ ký tự riêng lẻ trong thiết bị đầu cuối của bạn để vẽ hình ảnh 2D bằng cách sử dụng các ký tự ASCII và UTF-8. Công cụ này được gọi là tput. Công cụ này hoạt động bằng cách thao tác vị trí con trỏ theo tọa độ của thiết bị đầu cuối hiện tại của bạn. Dưới đây là danh sách mẫu của các tputchức năng:

# tput Cursor Movement Capabilities:

tput cup Y X
    # Move cursor to screen location X,Y (top left is 0,0)

tput sc
    # Save the cursor position

tput rc
    # Restore the cursor position

tput lines
    # Output the number of lines of the terminal

tput cols
    # Output the number of columns of the terminal

tput cub N
    # Move N characters left

tput cuf N
    # Move N characters right

tput cuu N
    # up N lines

tput cud N
    # down N lines

1

Ngoài các bộ công cụ tiện ích chính (GTK, Qt, WxWidgets) được đề cập trong câu trả lời của Wyzard, bạn cũng có thể xem xét các thư viện hướng phương tiện khác như SFML hoặc libSDL . Nếu bạn chỉ muốn một số đầu ra đồ họa (hầu như không có tương tác), bạn thậm chí có thể xem xét CairoGraphics .

Trong một số trường hợp bạn có thể sử dụng, thông qua một đường ống (ví dụ như popen ) hoặc trên dòng lệnh, các tiện ích lệnh như GNUplot hoặc GraphViz .

Bạn cũng có thể xem xét sử dụng các khả năng đồ họa của trình duyệt của mình, ví dụ: bằng cách mã hóa một số ứng dụng web chuyên dụng (sử dụng một số thư viện máy chủ HTTP như Wt hoặc libonion , với các công nghệ web như AJAX, SVG, HTML5, canvas, websockets, v.v ...)

Nhưng hầu hết các trình giả lập thiết bị đầu cuối không có hoặc có quá ít khả năng đồ họa (vì vậy không có đồ họa pixel chính hãng). Vì vậy, bạn thực sự cần chương trình của mình để tương tác với máy chủ hiển thị ( X11 , Wayland , ...).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.