- 論壇徽章:
- 0
|
gtk api 中有沒有bitblt函數(shù)或類似函數(shù) ???, online waiting...
- /*----------------創(chuàng)建構(gòu)件-------------------------*/
- drawable=gtk_drawing_area_new();
- /*----------------設(shè)定尺寸-------------------------*/
- gtk_drawing_area_size(drawable,200,200);
復(fù)制代碼
可繪制區(qū)事件
configure_event ------當(dāng)建立或者改變尺寸時(shí)
expose_event ------暴光,當(dāng)繪制構(gòu)件時(shí),或被遮住部分重新暴露時(shí)
或者當(dāng)引用程序產(chǎn)生重新繪制信息時(shí)
如果要消除閃爍需要監(jiān)聽以上兩個(gè)信號(hào)
- static gint configure_event(GtkWidget *widget, GdkEventConfigure *event)
- { /*---------假設(shè)你的窗口可以改變大小-------------------*/
- /*-----釋放之前我們建立的pixmap,如果有的話--------*/
- /*---pixmap是一個(gè)static GdkPixmap指針-----------*/
- if(pixmap){
- gdk_pixmap_unref(pixmap);
- }
- /*------然后再創(chuàng)建一個(gè)新的pixmap-------------*/
- pixmap=gdk_pixmap_new(widget->;window,
- widget->;allocation.width,
- widget->;allocation.height,
- -1);
- return TRUE;
- }
- expose_event更簡(jiǎn)單,就是繪制圖片就可以了
- gint expose_event(GtkWidget *widget,GdkEventExpose *event)
- {
- gdk_draw_pixmap(widget->;window,
- widget->;style->;fg_gc[GTK_WIDGET_STATE(widget)],
- pixmap,
- event->;area.x,event->;area.y,
- event->;area.x,event->;area.y,
- event->;area.width,event->;area.height);
- return FALSE;
- }
- gtk_widget_draw()函數(shù)可以引起expose_event
- pixmap實(shí)際上就是一個(gè)緩沖,平時(shí)你可以在他上面繪圖而不會(huì)影響到前臺(tái)
- 需要的時(shí)候就把他畫上去,這個(gè)是你自己激發(fā)expose_event,還是系統(tǒng)激發(fā)就看你的需求了,比如你可以設(shè)置一個(gè)定時(shí)器,一秒更新一次,或者100毫秒更新一次
復(fù)制代碼
說的差不多了,你覺得呢?
哎,現(xiàn)在不搞這些,手上的這些書都浪費(fèi)了 |
|