Интернет магазин китайских планшетных компьютеров



Компьютеры - X Pixmap - Свойства X Pixmap

15 мая 2011


Оглавление:
1. X Pixmap
2. Прозрачность
3. Свойства X Pixmap



Формат X Pixmap обладает рядом достоинств и недостатков которые отличают его от других форматов:

  1. Так как в формате X Pixmap приводится палитра, изображения X Pixmap не могут хранить более 255 цветов.
  2. Формат X Pixmap соостветствует серверной части X протокола, практически во все функции Xlib передается параметр drawable , который может означать или окно Window или XPixmap.
  3. Форматом клиентской стороны хранения изображений является XImage.

Использование в коде

Достаточно включить файл и можно использовать переменную

#include "image.xpm"

X Pixmap может использоваться не только для приложений X Window, а также в кроссплатформенных средах разработки. Например поддержка этого формата полностью реализована в библиотеке wxWidgets.

Пример программы

Ниже дан пример программы на C, которая выводит изображение в окно X Window, pixmap файл передан в командной строке:

 
/*
 * Компилируется строкой cc -o test test.c -lX11 -lXpm
 * Запускается: ./xtest xpm_file.xpm
*/
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xatom.h>
#include <X11/keysym.h>
#include <stdlib.h>
#include <X11/xpm.h>
#include <stdio.h>
#include <errno.h>
 
extern int errno;
 
 
int main
{
    Display *dis;
    Window win;                        /* Наше окно */
    XEvent event;              /* События */
    GC gc;                     /* Графический контекст */
    XImage *image,*shape;
    XpmAttributes xpm;
    int screen, depth, err, width, height;
    unsigned char *data;
    char file_name;
 
 
    if  {
        perror;
        exit;
    } else {
        strcpy;
    }
 
 
    if )) == NULL) {
        printf);
        exit;
    }
 
    win = XCreateSimpleWindow),
                              0, 0, 1024, 768,
                              5, BlackPixel),
                              WhitePixel));
 
    XSetStandardProperties;
 
    gc = DefaultGC);
 
    /* Читаем Pixmap */
    xpm.closeness = 40000;
    xpm.valuemask = XpmSize | XpmCloseness;
    err = XpmReadFileToImage;
    if  {
        printf;
        return -1;
    } else if  {
        printf;
        return -1;
    } else if  {
        printf;
        return -1;
    } else
        printf;
 
 
    XMapWindow;
    XSelectInput;
    while  {
        XNextEvent;
        if  {
            switch  {
 
           /* Вывести рисунок */
            case Expose:
                XPutImage;
                break;
 
                /* Нажали клавишу "q" */ 
            case KeyPress:
                if  == XK_q) {
                    XDestroyImage;
                    XCloseDisplay;
                    exit;
                }
                break;
            }
        }
    }
  return 0;
}


Просмотров: 2536


<<< X3D