免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 我菜我怕谁

gtk api 中有没有bitblt函数或类似函数 ???, online waiting... [复制链接]

论坛徽章:
0
发表于 2005-07-22 14:02 |显示全部楼层

gtk api 中有没有bitblt函数或类似函数 ???, online waiting...

呵呵,谢谢luojiannx的回答,因为刚刚才用上gtk,不是很熟悉!有个在线的gtk api文档
我查看了可是不能确定是不是,您能不能帮忙看看,谢谢.(偶很菜~~~) 谢谢!!

这个他的是网址:
   http://developer.gnome.org/doc/API/2.0/gtk/index.html
   http://developer.gnome.org/doc/API/2.0/gdk/gdk-Pixbufs.html 您看看是不是这个,我感觉像.

论坛徽章:
0
发表于 2005-07-22 14:08 |显示全部楼层

gtk api 中有没有bitblt函数或类似函数 ???, online waiting...

偶手里没有现成的书呀,不可能马上买书啊,只有等大侠帮忙了~~~ 郁闷ing...

论坛徽章:
0
发表于 2005-07-22 14:10 |显示全部楼层

gtk api 中有没有bitblt函数或类似函数 ???, online waiting...

原帖由 "luojiannx" 发表:
你是想高速绘图还是怎么?如果是这样,可能gtk会让你失望。
如果不要求高速度,一般用双缓冲绘图效果也还可以


什么是双缓冲绘图啊??

论坛徽章:
0
发表于 2005-07-22 14:21 |显示全部楼层

gtk api 中有没有bitblt函数或类似函数 ???, online waiting...

推荐你抽空去买几本书,我现在在上班,不在家,很难解释。
我不是超人,记不得那么多东西
如果你不急,我明天可以给你贴上几段
另外,双缓冲绘图是在图形显示里面用的很多的一种技术
就是一个用两个surface(其实就是一块存储区),一个用在前台显示,另外一个在后台画,画好了再flip(也就是切换),当然有的还有用3缓冲的,其实本质差不多,用这种技术可以避免很多问题,比如闪烁,操作的复杂性等等

论坛徽章:
0
发表于 2005-07-22 14:32 |显示全部楼层

gtk api 中有没有bitblt函数或类似函数 ???, online waiting...

显然现在gtk有中文文档了,给你个地址
http://www.gnome-cn.org/documents/developer_doc/

论坛徽章:
0
发表于 2005-07-22 14:33 |显示全部楼层

gtk api 中有没有bitblt函数或类似函数 ???, online waiting...

谢谢!我再看看...

论坛徽章:
0
发表于 2005-07-23 19:51 |显示全部楼层

gtk api 中有没有bitblt函数或类似函数 ???, online waiting...


  1. /*----------------创建构件-------------------------*/
  2. drawable=gtk_drawing_area_new();

  3. /*----------------设定尺寸-------------------------*/
  4. gtk_drawing_area_size(drawable,200,200);
复制代码

可绘制区事件
configure_event  ------当建立或者改变尺寸时
expose_event     ------暴光,当绘制构件时,或被遮住部分重新暴露时
                       或者当引用程序产生重新绘制信息时

如果要消除闪烁需要监听以上两个信号






  1. static gint configure_event(GtkWidget *widget, GdkEventConfigure *event)
  2. {      /*---------假设你的窗口可以改变大小-------------------*/
  3.         /*-----释放之前我们建立的pixmap,如果有的话--------*/
  4.         /*---pixmap是一个static GdkPixmap指针-----------*/
  5.        if(pixmap){
  6.               gdk_pixmap_unref(pixmap);
  7.        }
  8.         /*------然后再创建一个新的pixmap-------------*/
  9.        pixmap=gdk_pixmap_new(widget->;window,
  10.                                                   widget->;allocation.width,
  11.                                                   widget->;allocation.height,
  12.                                                   -1);
  13.        return TRUE;
  14. }

  15. expose_event更简单,就是绘制图片就可以了
  16. gint expose_event(GtkWidget *widget,GdkEventExpose *event)
  17. {
  18.         gdk_draw_pixmap(widget->;window,
  19.                 widget->;style->;fg_gc[GTK_WIDGET_STATE(widget)],
  20.                 pixmap,
  21.                 event->;area.x,event->;area.y,
  22.                 event->;area.x,event->;area.y,
  23.                 event->;area.width,event->;area.height);
  24.           return FALSE;
  25. }

  26. gtk_widget_draw()函数可以引起expose_event
  27. pixmap实际上就是一个缓冲,平时你可以在他上面绘图而不会影响到前台
  28. 需要的时候就把他画上去,这个是你自己激发expose_event,还是系统激发就看你的需求了,比如你可以设置一个定时器,一秒更新一次,或者100毫秒更新一次
复制代码

说的差不多了,你觉得呢?
哎,现在不搞这些,手上的这些书都浪费了

论坛徽章:
0
发表于 2005-07-23 23:43 |显示全部楼层

gtk api 中有没有bitblt函数或类似函数 ???, online waiting...

在此技术中一般都是采用重画,不存在什么移动画块,如果你要从别的地方获得一个块,请参考以下代码(我没用过)
  1. GdkBitmap*  gdk_bitmap_create_from_data     (GdkWindow *window,
  2.                                              const gchar *data,
  3.                                              gint width,
  4.                                              gint height);
  5. GdkPixmap*  gdk_pixmap_create_from_data     (GdkWindow *window,
  6.                                              const gchar *data,
  7.                                              gint width,
  8.                                              gint height,
  9.                                              gint depth,
  10.                                              GdkColor *fg,
  11.                                              GdkColor *bg);
  12. GdkPixmap*  gdk_pixmap_create_from_xpm      (GdkWindow *window,
  13.                                              GdkBitmap **mask,
  14.                                              GdkColor *transparent_color,
  15.                                              const gchar *filename);
  16. GdkPixmap*  gdk_pixmap_create_from_xpm_d    (GdkWindow *window,
  17.                                              GdkBitmap **mask,
  18.                                              GdkColor *transparent_color,
  19.                                              gchar **data);
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP