如何使用gtk+在窗体上绘图

<!-- @page { margin: 2cm } TD P { margin-bottom: 0cm } P { margin-bottom: 0.21cm } -->

1. 如何使用gtk+ 在窗体上绘图

如果要在窗体上绘图,在MFC 中时使用DC 来进行操作的。那么在gtk+ 中是怎么做的呢?

为了捕获构件的时间,我们需要使用事件盒构件。对于绘图程序,我们想知道什么时候鼠标键按下和什么时候鼠标移动,因此我们要用GDK_POINTER_MOTION_MASKGDK_BUTTON_PRESS_MASK 。我们也想知道什么时候窗口需要重绘,因此我们也要用GDK_EXPOSURE_MASK 。虽然我们也想在窗口尺寸时得到消息,不过我们不必用GDK_STRUCTURE_MASK 标志,因为所有的窗口都自动设了该标志。

只用GDK_POINTER_MOTION_MASK 是有问题的,这回使服务器在每次用户移动鼠标时向事件队列添加一个移动事件。假设处理一个移动事件需要0.1 秒,但是X 服务器每0.05 秒添加一个新的移动事件。如果用户绘制需要5 秒,那么在释放鼠标键后我们的程序会中断5~ 我们所需要的知识为我们处理的每个时间的获取一个移动事件。解决这个问题的方法是用GDK_POINTER_MOTION_HINT_MASK.

我们用GDK_POINTER_MOTON_MASK 时,在指针进入我们的

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值