StretchBlt для Xlib? - PullRequest
       3

StretchBlt для Xlib?

0 голосов
/ 28 февраля 2011

Я ищу функцию, которая делает то же самое, что и StretchBlt GDI для Xlib. Я не могу найти такую ​​функцию в заголовках XLib, поэтому начинаю думать, что мне придется понять, как работает StretchBlt, чтобы реализовать ее самостоятельно для XLib. Я ценю любую помощь.

Ответы [ 2 ]

1 голос
/ 28 февраля 2011

Нет ничего, что делает это в Xlib или протоколе X.Вот несколько способов сделать это:

  • gdk_pixbuf_composite () в gdk-pixbuf (часть GTK + 2.x, отдельная библиотека для GTK + 3.x)
  • Cairo (http://cairographics.org)
  • OpenGL
  • Skia (http://code.google.com/p/skia/)
  • написать свою собственную программу вручную

Лучший подход во многом зависит от деталейВаш проект. В целом, примитивы рисования Xlib по современным стандартам практически бесполезны, поэтому вам действительно нужно подключить библиотеку более высокого уровня. Cairo, вероятно, является выбором по умолчанию, он широко используется в материалах с открытым исходным кодом.

Кодированиесделать это в общем и правильном для Xlib довольно сложно ... проблема в том, что вам приходится иметь дело с любой визуальной и цветовой картой, которую могут иметь ваши пользователи. Если вы знаете точное аппаратное и программное обеспечение, которое будут использовать ваши пользователи, это может бытьвторостепенная вещь, в противном случае это может быть своего рода головной болью. Существует много преобразований для записи между 16-битной и 24-битной и 32-битной глубиной и разным порядком байтов и т. д. GTK + и CaУ меня есть код преобразования, поэтому, если вы можете использовать его, вы можете написать растягивающую процедуру в фиксированном формате, например ARGB32, и вам не придется иметь дело со всеми остальными.

0 голосов
/ 07 марта 2011

Этот тип функциональности предлагается расширением XRender: http://cgit.freedesktop.org/xorg/proto/renderproto/plain/renderproto.txt

...