编写clutter的helloworld

本文介绍了如何使用Clutter图形库创建一个简单的六边形动画应用。通过实例代码演示了从项目搭建、图形创建到动画实现的全过程,并提供了编译及运行指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      编译完clutter之后,需要写一个hello world。这里我参考了资料1,具体的流程如下:

      在源代码目录下创建目录myapp,同时创建文件example.c,加入如下代码:

#include 
#include 
// six empty rectangles and our stage
ClutterActor *stage = NULL;
ClutterActor *rect1 = NULL;
ClutterActor *rect2 = NULL;
ClutterActor *rect3 = NULL;
ClutterActor *rect4 = NULL;
ClutterActor *rect5 = NULL;
ClutterActor *rect6 = NULL;
// the create_rect() function needs to create actual rectangles rather than text boxes
ClutterActor *create_rect(ClutterColor col) {
  ClutterActor *rect = clutter_rectangle_new_with_color(&col);
  clutter_actor_set_size(rect, 256, 128);
  clutter_actor_set_position(rect, 256, 256);
  clutter_actor_set_anchor_point(rect, 128, 64);
  clutter_container_add_actor (CLUTTER_CONTAINER (stage), rect);
  clutter_actor_show (rect);
  return rect;
}
void move_rect(ClutterActor *rect) {
    clutter_actor_animate (rect,
            // CLUTTER_LINEAR,          // animate in linear
            CLUTTER_EASE_IN_OUT_BACK,   // animate like iphone
            500,
            "x", (float)(rand() % 512),
            "y", (float)(rand() % 512),
            "rotation-angle-z", (float)(rand() % 360),
            NULL);
}
// we'll be filling in this function later
void on_stage_button_press (ClutterStage *stage, ClutterEvent *event, gpointer data) {
    move_rect(rect1);
    move_rect(rect2);
    move_rect(rect3);
    move_rect(rect4);
    move_rect(rect5);
    move_rect(rect6);
}
int main(int argc, char *argv[]) {
    ClutterColor stage_color = { 0, 0, 0, 255 };
    ClutterColor red = { 255, 0, 0, 128 };
    ClutterColor green = { 0, 255, 0, 128 };
    ClutterColor blue = { 0, 0, 255, 128 };
    ClutterColor yellow = { 255, 255, 0, 128 };
    ClutterColor cyan = { 0, 255, 255, 128 };
    ClutterColor purple = { 255, 0, 255, 128 };
    clutter_init (&argc, &argv);
    stage = clutter_stage_get_default();
    clutter_actor_set_size (stage, 512, 512);
    clutter_stage_set_color (CLUTTER_STAGE(stage), &stage_color);
    rect1 = create_rect(red);
    rect2 = create_rect(green);
    rect3 = create_rect(blue);
    rect4 = create_rect(yellow);
    rect5 = create_rect(cyan);
    rect6 = create_rect(purple);
    g_signal_connect (stage, "button-press-event", G_CALLBACK (on_stage_button_press), NULL);
    clutter_stage_set_title(CLUTTER_STAGE(stage), "Spinny boxes ahoy!");
    clutter_actor_show (stage);
    clutter_main ();
    return EXIT_SUCCESS;
}

      然后,在msys控制台下,切换到myapp目录执行如下命令

libtool --mode=link gcc -Wall -g -o example.exe example.c /
-I/clutter-work/clutter-cross/include /
`PKG_CONFIG_PATH=/clutter-work/clutter-cross/lib/pkgconfig pkg-config clutter-win32-1.0 --cflags --libs`

      这样会生成example.exe,执行以下,效果不错吧。具体细节参考参考资料1

      源代码目录下有参考文档,位于clutter-1.2.12/doc/reference目录下。

参考资料:

1. Clutter: a beginner's tutorial

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值