LINUX.ORG.RU

Пишем алфавит на картинке


0

0

Привет всем!!! У меня тут такой вопрос к программистам на С++ или на Си... Скорее на С++...

Моя задача заключается в создании картинки и изображении на ней определённого количесва символов для заданного шрифта...

Но проблема в том, что ничего нельзя использовать кроме "голого" Linux API, то етсь никаких Motif, QT и Gtk+... Только Xlib.

Фонт взять могу, пиксмапу тоже можно создать по битам... а вот как нарисовать на ней что-то не создавая окна???? вот это вопрос...

Кто-нибудь что-нибудь знает об этом?

Xlib имеет для етого весь необходимый инструмент. Тоесть в начале создаёш обьект типа рисунок далее ты можешь по нём писать любым шрифтом установленным в системе. С именами обьектов и ф-й не подскажу потому что в своё время юзал обвёртку вокруг Xlib-a. Но точно уверен что ето поддерживается. Если потом будет необходимо отобразить ету картинку на екране то создаёш окно и отрисовываеш её в окне.

cvv ★★★★★
()

создаешь pixmap (CreatePixmap)), создаеш gc(graphical context), проставляешь в этом gc свой фонт, рисуешь на pixmap(PolyText/ImageText), грабишь image(GetImage), конвертишь image в какой либо формат, пишешь на диск

lg ★★
()

В php для этих целей используется libgd. Голое API, практически...

AngryElf ★★★★★
()
Ответ на: комментарий от Allender

    Pixmap aPixmap = XCreatePixmap( aDisplay, 0, 800, 600, 1 );

    for( int i = 0; i < xFontCount && i < 10; i++ )
    {
	XGCValues* aGCValues = new XGCValues();
      aGCValues->font = XLoadFont( aDisplay, xFontList[i] );
      XChangeGC( aDisplay, aDefGC, GCFont, aGCValues );
      char* aStr = "ABCDabcd";
      int anError = XDrawString( aDisplay, aPixmap, aDefGC, 20, 20*(i+1), aStr, 8 );
    }

    XImage* anImage = XGetImage( aDisplay, aPixmap, 0, 0, 800, 600, 0, XYPixmap );

Я здесь пытаюсь в цикле нарисовать 10 строчек разными шрифтами. 
И всё сыпится на XGetImage: BadDrawable
Единственное, что меня смущает, это 6-ой аргумент - plane_mask. Я так тольком и не понял его значение...
Может быть в нём проблема?

Allender
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.