Сохранение в файл PCX. Программирование на Си/С, исходник


Добавил:DMT
Дата создания:18 июня 2008, 23:42
Дата обновления:28 июня 2008, 22:47
Просмотров:7721 последний позавчера, 22:50
Комментариев: 0
Сохранение в файл PCX. Программирование на Си/С, исходник
Код на C++
  1.  
  2.  
  3. void save_PCX(int x0,int y0,int x,int y,char* file_name)
  4. {
  5. FILE* ImagePCX;
  6. if ((x-x0)/2*2!=(x-x0)) x++;
  7. ImagePCX = fopen(file_name, "wb");
  8.  
  9. HeaderPCX Header;//Сохранение в файл PCX. Заголовок файла PCX
  10.  
  11. Header.Manufacturer = 10;
  12. Header.Version = 5;
  13. Header.Encoding = 1;
  14. Header.Bitperpixel = 4;
  15.  
  16. Header.MinX =x0;
  17. Header.MinY =y0;
  18. Header.MaxX =x;
  19. Header.MaxY =y;
  20.  
  21. unsigned char r,g,b;//Сохранение в файл PCX
  22. for (int i=0;i<16;i++)
  23. { r=pal[i][0];g=pal[i][1];b=pal[i][2]; Header.Colormap[i]=RGB(r,g,b); }
  24.  
  25. Header.HRes = Header.VRes = 72;
  26. Header.NPlanes = 1;
  27.  
  28. Header.Bytesperline = 320;
  29. Header.Paletteinfo = 1;
  30.  
  31. fwrite(&Header, sizeof(HeaderPCX), 1, ImagePCX);
  32.  
  33. for(int YPos=y0; YPos<y+1; YPos++)
  34. for(int XPos=x0; XPos<640+x0;XPos+=2)
  35. {
  36. int unsigned color;
  37. if(XPos>=x0&&XPos<=x)
  38. {
  39. color=getpixel(XPos,YPos);
  40. fputc(0xC1, ImagePCX);
  41. fputc(16*color+color, ImagePCX);
  42. }
  43. else { fputc(0xC1, ImagePCX); fputc(0xC1, ImagePCX); }
  44. }
  45. fclose(ImagePCX);
  46. }
  47.  
При использовании обязательна ссылка на http://DMTSoft.ru
up