Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XSetForeground - задать, произвольный цвет 
V
    Опции темы
Rickert
  Дата 6.12.2007, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: -2
Всего: 52



САБЖовая функция принимает третьим параметром цвет пикселя. Вопрос: как из RGB получить это unsigned long значение?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
bsa
Дата 6.12.2007, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



Код
union color {
      struct {
              unsigned char r, g, b, a;//иногда, порядок может быть другим
      };
      unsigned long index;
};

PM   Вверх
Rickert
Дата 7.12.2007, 07:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: -2
Всего: 52



Э... И?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Rickert
Дата 7.12.2007, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: -2
Всего: 52



Нет, я конечно понимаю смысл, что указываешь в rgba, а он тебе потом просто через unsigned long это выдаёт
Типа:
Цитата
red = 59
green = f3
blue = b6

В результате, если обратиться к index, то у него будет:
Цитата
0059f3b6

Я так и делаю, только смещением и побитовым или и результат идентичен, а отображает она каритнку всё равно криво, как будто цветов не хватает.

Добавлено через 6 минут и 5 секунд
Смотри скрин. В браузере открыта картинка, как должна быть, а на верху, в впрограмме, как отображается.

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  snapshot2.png 102,84 Kb


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
bsa
Дата 7.12.2007, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



Вот здесь есть пример: http://www.xmission.com/~georgeps/document...b_Beginner.html
PM   Вверх
Rickert
Дата 11.12.2007, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: -2
Всего: 52



Да, всё вроде то, но вопрос такой:
Код

XParseColor(dis, colormap, green, &green_col);
XAllocColor(dis, colormap, &green_col);

Т.к. у меня картинка 1024х200 - она обрабатывает её очень долго из - за второй функции. Как сузить время получения цвета?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Rickert
Дата 11.12.2007, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: -2
Всего: 52



Разобрался как он цвета кодирует, так что эти функции не в счёт.
Ошибка с выводом видимо в библиотеки libpng или я как-то неверно юзаю функции для открытия файла. Буду искать ошибку.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
MAKCim
Дата 11.12.2007, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(Rickert @  11.12.2007,  08:32 Найти цитируемый пост)
Ошибка с выводом видимо в библиотеки libpng

совет, ругать библиотеку надо в самом последнем случае  smile 
в 99% случаев виновата не она


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Rickert
Дата 12.12.2007, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: -2
Всего: 52



MAKCim, да я всё это прекрасно понимаю, но не вижу никаких ошибок у себя. Несколько разных мануалов просмотрел - всё так должно быть. Вот, исходники.
Класс:
Код
class aPng
{
  public:
    aPng();
      bool apLoadImage(char* path);
      void apClearData();
    ~aPng();
    
    int bpc;
    int w;
    int h;
    int channels;
    unsigned char* data;
    int ct;
    int it;
    int cot;
    int ft;
    int depth;
    int rowSize;
    Pixmap pm;
};

Код
bool aPng::apLoadImage(char* path)
{
  if (!path)
   return 0;
   
  FILE* file = fopen(path, "rb");
  
  if (!file)
  {
    fprintf(stderr, "Can't open image file for reading \"%s\".\n", path);
    
    return 0;
  }

  png_structp png = png_create_read_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0);
  png_infop pngInfo = png_create_info_struct(png);
  
  png_init_io(png, file);
  png_read_info(png, pngInfo);
  png_get_IHDR(png, pngInfo, (png_uint_32*)&w, (png_uint_32*)&h, &bpc, &ct, &it, &cot, &ft);
  if (ct == PNG_COLOR_TYPE_GRAY)
    channels = 1;
  if (ct == PNG_COLOR_TYPE_GRAY_ALPHA)
    channels = 2;
  if (ct == PNG_COLOR_TYPE_RGB)
    channels = 3;
  if (ct == PNG_COLOR_TYPE_RGB_ALPHA)
    channels = 4;
  if (bpc == 16)
    png_set_swap(png);
  if ((ct == PNG_COLOR_TYPE_PALETTE) && (bpc <= 8))
    png_set_palette_to_rgb(png);
  if (png_get_valid(png, pngInfo, PNG_INFO_tRNS))
    png_set_tRNS_to_alpha(png);
  rowSize = w*channels*(bpc >> 3);
  
  int i;
  data = new unsigned char[h*rowSize];
  unsigned char* row = data;
  
  for (i = 0; i < h; ++i)
  {
    png_read_row(png, (png_bytep)row, 0);
    row += rowSize;
  }
  png_read_end(png, 0);
  png_destroy_read_struct(&png, &pngInfo, 0);
  
  fclose(file);

  return 1;
}
 
Естественно это самый простой код, направленный на то чтобы только попробовать открыть и вывести картинку.

Добавлено через 2 минуты и 32 секунды
Где-то в мануалах упоминалось мол изначально окна не мог юзать больше 256 цветов. Может в этом дело?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Rickert
Дата 17.12.2007, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: -2
Всего: 52



Решение в том, что как-то надо менять цветовую палитру Pixmap'а.
Короче, начал выводить прямо на экран  и проблема рассасалась


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0975 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.