#include <gtk/gtk.h>
#include <stdio.h>
//time()
#include <time.h>
//rand()
#include <stdlib.h>
#define X_WIDTH 600
#define X_HEIGHT 400
#define POINT_NUM 6
guint timer_0,timer_1;
typedef struct _POINT{
gint x;
gint y;
}Point;
Point points[POINT_NUM];
void init_points(){
srand((unsigned int)time(0));
for(int i = 0;i<POINT_NUM;i++){
points[i].x = rand()%X_WIDTH;
points[i].y = rand()%X_HEIGHT;
}
}
gboolean move_point(GtkWidget *widget){
for(int i = 0;i<POINT_NUM;i++){
points[i].x += rand()%2?1:-1;
points[i].y += rand()%2?1:-1;
if(points[i].x >X_WIDTH){
points[i].x = X_WIDTH;
}
if(points[i].x <0){
points[i].x = 0;
}
if(points[i].y >X_HEIGHT){
points[i].y = X_HEIGHT;
}
if(points[i].y <0){
points[i].y = 0;
}
}
return true;
}
gboolean show_graph(GtkWidget *widget){
cairo_t *cr;
cr = gdk_cairo_create (widget->window);
cairo_set_source_rgb(cr,0,0,0);
cairo_move_to(cr,0, 0);
cairo_line_to(cr,X_WIDTH,0);
cairo_line_to(cr,X_WIDTH,X_HEIGHT);
cairo_line_to(cr,0,X_HEIGHT);
//cairo_stroke_preserve绘图后会保留路径,之后cairo_fill可以填充。而cairo_stroke绘图后不会保留路径,cairo_fill就无法填充
cairo_stroke_preserve(cr);
cairo_fill(cr);
srand((unsigned int)time(0));
for(int i = 0;i<POINT_NUM;i++){
for(int j=i+1;j<POINT_NUM;j++){
cairo_set_source_rgb(cr,0.39,1,1);
cairo_set_line_width(cr,1);
cairo_move_to(cr,points[i].x, points[i].y);
cairo_line_to(cr,points[j].x, points[j].y);
cairo_stroke(cr);//clear line path
}
}
/*
cairo_destroy (cr);
while(g_main_context_pending(NULL)){
g_main_context_iteration(NULL,false);
}
*/
return true;
}
int main(int argc,char* argv[]){
GtkWidget *window;
gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),"Demo");
gtk_window_set_default_size(GTK_WINDOW(window),X_WIDTH,X_HEIGHT);
g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),NULL);
//启动定时器
timer_0 = g_timeout_add(30,(GSourceFunc)move_point,window);
timer_1 = g_timeout_add(30,(GSourceFunc)show_graph,window);
gtk_widget_show_all(window);
init_points();
//设置窗口可绘制
gtk_widget_set_app_paintable(window,true);
gtk_main();
return 0;
}
没有合适的资源?快使用搜索试试~ 我知道了~
timerDemo.zip gtk定时器绘制动态图像演示
![preview](https://csdnimg.cn/release/downloadcmsfe/public/img/white-bg.ca8570fa.png)
共1个文件
c:1个
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 153 浏览量
2022-11-19
01:44:26
上传
评论
收藏 1KB ZIP 举报
温馨提示
gtk定时器绘制动态图像演示
资源推荐
资源详情
资源评论
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![tar](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![thumb](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
收起资源包目录
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
共 1 条
- 1
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/5e5b4ab6c94040c78b371abcd9a0002b_m0_60352504.jpg!1)
百口可乐__
- 粉丝: 959
- 资源: 221
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)