LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1514|回复: 5

gtk中图上加个边框该怎么做呢?现在我做的效果不好

[复制链接]
发表于 2008-1-2 13:42:29 | 显示全部楼层 |阅读模式
一个GtkImage控件在调整好大小和位置后,放在一个GtkFixed容器上,使用gtk_fixed_put来放置image控件。

现在需要在GtkImage的四周画上一个矩形边框,表示该图片被选中。目前使用GtkFixed的expose event来处理,在该信号处理函数中使用gdk_draw_rectangle来画矩形。

但是发现,显示image和矩形的顺序不定,如果只有一个image的话,那我可以把image的大小和放置位置留出矩形的宽度就行了,跟显示顺序无关,但是现在有多个image要放在fixed上,而且是有可能位置是连续的,这样的话,后面显示的图片可能会把前面的矩形的一边给盖掉。

不知道有什么办法,谢谢大家!
发表于 2008-1-3 21:58:01 | 显示全部楼层
呵呵..

你遇到的问题,我是这样做的,不知道对你适不适用


实际上就是一个图片控件,选中之后,图片的状态要发生改变。

我是用eventBox, 然后在eventBox上面加图片。  用eventBox来响应事件

图片的状态改变可以用2个图片来实现就可以了。 一个表示选中,一个表示没选中


我那个帖子里的问题,你回答了一点,但是我还有疑问。

  能加QQ讨论一下吗?   我的QQ 185666641
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-4 15:43:11 | 显示全部楼层
首先谢谢楼上的回答。有什么问题就发站内消息吧,我不用qq好多年了,^_^

楼上的做法无法解决我的问题,我的图片是变长度的。

详细一点说吧,我有一个列表,列表的内容就是一条条的记录,每条记录有start time到end time,我要根据这两个time在一个时间尺度(GtkFixed)上放置表示该记录的一个图片(GtkImage),那么由于每条记录时间长短不同,start time不同,那么这个图片在GtkFixed上放置的位置和长短也不同。

打个比方,假设时间尺度是表示一个小时的,那么有可能在一个小时内有好几条纪录,那么我要把这些记录都显示在这个时间尺度上,但是当前被选中的记录只有一条,我要在其上画个框来表示,而不是用另外一张图来替换,也没办法替换,记录长短各不相同,无法准备画好框的图片。

问题又回到顶楼,^_^
回复 支持 反对

使用道具 举报

发表于 2008-1-4 21:04:30 | 显示全部楼层
呵呵..

这样的啊      明白的你的意思了

那我的问题又来了, 在GtkFixed 里面 放置一个可变长度的图片,你是怎么实现的哦?

麻烦解惑
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-5 13:35:28 | 显示全部楼层
我使用gtk_widget_set_size_request(image)来设置图片大小,其实原图片长度和表示时间尺度的长度是一样的,表示记录的长度肯定小于等于该长度的。

上述的函数有可能是没有图片的缩放,如果你是一张大图,然后set_size,你只能看到size大小的图片部分,只是猜测,你可以做个实验确认一下。因为我的图片是一条电影剪辑,所以对我的应用没有影响。

要缩放的话要用GdkPixbuf。

因为看到楼上朋友的发的问题帖子,这里顺便提一下。
回复 支持 反对

使用道具 举报

发表于 2008-1-7 20:55:21 | 显示全部楼层
哦,好的。

非常感谢,我自己试一下看看
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表