【问题标题】:Change graphic context in SWT application在 SWT 应用程序中更改图形上下文
【发布时间】:2016-03-03 10:36:24
【问题描述】:

我有一个用 SWT 编写的简单应用程序。我从SWT.Paint 事件中得到GC。在我的主画布中,我添加了一个MouseMovelistener,因此如果鼠标在该区域中,一些文本将显示在指定区域。

我想在鼠标不在区域上之后从GC 中删除文本。我没有发现任何关于从 GC 中删除绘制对象或用新对象替换 GC 的内容。

你能告诉我我怎样才能达到这样的结果吗?除了通过SWT.Paint 事件之外,没有其他方法可以访问GC 对象。

【问题讨论】:

    标签: eclipse swt


    【解决方案1】:

    无法删除在 GC 上绘制的线条文本等元素。尽管 GC 有绘制文本和线条等的方法,但这些方法只是将形状转换为像素,这是 GC 所知道的。

    因此,您的应用程序应该维护一个模型,该模型允许定位文本并删除已放置的文本元素。每当模型更改时,画布都应该用canvas.redraw() 刷新,这会发送SWT.Paint 事件。然后,您的绘制侦听器可以检查模型并相应地绘制文本。

    Graphics Context - Quick on the draw 文章有更多关于 SWT 图形上下文的详细信息。

    【讨论】:

      【解决方案2】:

      添加 MouseTrackListener 并控制鼠标进出画布

      MouseTrackListener mtl = new MouseTrackAdapter() {
          @Override
          public void mouseEnter(MouseEvent e) {
              // add your PaintListener here
          }
      
          @Override
          public void mouseExit(MouseEvent e) {
          // remove PaintListener here    
          }
      };
      canvas.addMouseTrackListener(mtl)
      

      【讨论】:

        猜你喜欢
        • 2011-10-05
        • 1970-01-01
        • 1970-01-01
        • 2011-01-05
        • 2011-08-23
        • 1970-01-01
        • 2014-12-28
        • 2014-02-18
        • 1970-01-01
        相关资源
        最近更新 更多