Под этим я подразумеваю элементы пользовательского интерфейса (например, текстовые поля и анимированные кнопки), которые не ограничены одноразмерной символьной сеткой эмуляторов терминала, но могут иметь произвольную форму в произвольных положениях пикселей на экране. Мне просто любопытно, возможно ли и как это возможно, и если это невозможно, запланировано ли это на будущее.
11
svg-clock
пакет в GNU ELPA для «простого» примера. Но если вы хотите рисовать поверх других элементов, то, к сожалению, ответ «нет», хотя многие были бы рады, если бы кто-то написал патч, который делает это.Draw image.png(400x600+16+30)
чтобы нарисовать масштабированное изображение по определенной координате относительно некоторого угла.Ответы:
Текстовые поля и кнопки (например, в буферах Customize) фактически подчиняются сетке, на которой Emacs выравнивает символы.
То, что вы можете сделать, это сказать Emacs отобразить изображение типа SVG (вектор) или XPM (растровое изображение). Так как они не ограничиваются чтением из файла, вы можете сгенерировать строку и превратить ее в изображение. Я видел примеры как холстоподобного использования, когда изображение занимает большую часть окна и свободно рисуется (см. Svg-thing , slime-volley , svg-clock , мой собственный svg-2048 ), так и менее неприятного использования, которое довольно напоминают элементы пользовательского интерфейса (см иконки в AucTeX , гну 'режимной значок, графическая версия
M-x tetris
, SVG-режимный). Еще предстоит немало потрудиться, учитывая, что в Emacs нет типа изображения, похожего на холст, но можно сместить эти изображения и использовать их в качестве свойства отображения других элементов пользовательского интерфейса, таких как modeline или margin и bind, включая мышь. для них.источник
Для рисования растровой графики вы можете попробовать EPaint . Кажется, он поддерживает рисование от руки и основные геометрические фигуры.
источник