Chinaunix首页 | 论坛 | 博客
  • 博客访问: 459283
  • 博文数量: 62
  • 博客积分: 1742
  • 博客等级: 中尉
  • 技术积分: 859
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-06 00:13
个人简介

这是一句很长很长而且又很啰嗦并且很无聊的废话...

文章分类

全部博文(62)

文章存档

2013年(1)

2012年(13)

2011年(48)

分类: LINUX

2011-11-11 11:39:57

继上篇移植成功以后,需要做一个完全由PNG图片组成的程序,其中遇到一些问题.就是如果GrDrawImageFromFile尺寸参数跟图片尺寸大小不一致,导致无法显示.而且必要时要去掉BGR转RGB的代码.
下面贴一下代码,留个纪念.

  1. #define MWINCLUDECOLORS
  2. #include <stdio.h>
  3. #include "nano-X.h"
  4. #include "mwtypes.h"
  5.  
  6. static GR_WINDOW_ID wid;
  7. static GR_GC_ID gc, gc1, gc2, gc3, gc4;
  8. static GR_IMAGE_INFO image_info;
  9. static GR_WINDOW_ID pixmap;
  10. static GR_EVENT event;
  11.  
  12. static void handleevent(GR_EVENT *);
  13. static void doClick(void);

  14. int main(int ac,char **av){
  15.     if (GrOpen()<0){
  16.         printf("Can't open graphics\n");
  17.         exit(1);
  18.     }
  19.     
  20.     gc = GrNewGC();
  21.     wid = GrNewWindowEx (GR_WM_PROPS_APPWINDOW |
  22.             GR_WM_PROPS_CAPTION |
  23.             GR_WM_PROPS_CLOSEBOX,
  24.             "no title",
  25.             GR_ROOT_WINDOW_ID, 0, 0,
  26.             1028,
  27.             768,
  28.             MWRGB(0xf, 0, 0));

  29.     GrMapWindow(wid);

  30.     gc1 = GrNewGC();
  31.     gc2 = GrNewGC();
  32.     gc3 = GrNewGC();
  33.     gc4 = GrNewGC();

  34.     GrSetGCForeground(gc1, RED);
  35.     GrSetGCBackground(gc1, BROWN);
  36.     GrSetGCForeground(gc2, MAGENTA);
  37.     GrSetGCMode(gc4, GR_MODE_XOR);
  38.     
  39.     GrSelectEvents(wid, GR_EVENT_MASK_CLOSE_REQ | GR_EVENT_MASK_EXPOSURE);
  40.     GrSelectEvents(wid, GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_DOWN);
  41.     
  42.     while(1){
  43.         GrCheckNextEvent(&event);
  44.         handleevent(&event);
  45.     }
  46.     return 0;
  47. }

  48. static void handleevent(GR_EVENT *event){
  49.     switch (event->type){
  50.         case GR_EVENT_TYPE_BUTTON_DOWN:
  51.             doClick();
  52.             break;
  53.         case GR_EVENT_TYPE_EXPOSURE:
  54.             break;
  55.         case GR_EVENT_TYPE_CLOSE_REQ:
  56.             GrClose();
  57.             exit(0);
  58.             break;
  59.         default:
  60.             break;
  61.     }
  62. }

  63. static void doClick(void){
  64.     GrDrawImageFromFile (wid, gc, 150, -80, 804, 1024, "/mnt/nfs/k.png", 1);
  65.     GrDrawImageFromFile (wid, gc, -10, -20, 300, 300, "/mnt/nfs/a.png", 1);
  66.     GrDrawImageFromFile (wid, gc, 100, 600, 48, 48, "/mnt/nfs/2.png", 1);
  67.     GrText(wid, gc, 750, 100, "fuck", 20, 0);
  68.     printf("Good!\n");
  69. }
 
阅读(2152) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~