【问题标题】:rectangle without border无边框矩形
【发布时间】:2012-05-20 15:15:09
【问题描述】:

在draw2d中,如何绘制没有边框的图形? 如何为矩形实现 CustomBorder 以去除边框? 我知道如果我们实现一个扩展边框的类,在paint方法中我应该怎么做才能去除边框?

【问题讨论】:

    标签: eclipse-plugin swt eclipse-rcp draw2d


    【解决方案1】:

    除非您通过调用setBorder(..) 明确设置边框,否则图形没有边框。如果您只想要一个不画任何东西的空白图形,那么new Figure() 会为您提供。无需实现任何自定义边框或图形。如果您使用的是Rectangle,那么这正是您将得到的:一个矩形;这可能是您对边界感到困惑的地方。

    【讨论】:

    • 没错。但是,如果绘制一个图形并尝试在画布上显示它,它会给我一个空白图形。这意味着它不可见。我试图设置背景以查看是否可以使其可见。但我看不到。所以我假设图形基本上是一种包含其他形状的容器。那是对的吗?请让我明白。这就是我使用没有任何边框的自定义矩形的原因。
    • 使用“figure.setOpaque(true)”Figure 将绘制其背景颜色。
    【解决方案2】:

    您可以使用figure.setBorder(null); 禁用边框,也可以将其放入构造函数中:

    public static  class BorderlessFigure extends Figure {
        public BorderlessFigure() {
            ToolbarLayout layout = new ToolbarLayout();
            setLayoutManager(layout);   
            setBorder(null);
            add(new Label("test"));  
        }
    }
    

    如果您想要一个不绘制任何内容的边框,您可以扩展 org.eclipse.draw2d.AbstractBorder:

    public class NoBorderBorder extends AbstractBorder {
        @Override
        public void paint(IFigure f, Graphics g, Insets i) { }
    
        @Override
        public Insets getInsets(IFigure f) {
            return new Insets(0);
        }
    }
    

    我不知道你为什么要这样做。

    【讨论】:

    • 您好,感谢您的建议。在我在这里发布之前,我尝试过这种方式。但根本没有工作。然后我尝试使用扩展矩形图形的自定义图形。然后我可以绘制没有任何边框的矩形。
    猜你喜欢
    • 2011-02-03
    • 2012-04-10
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    相关资源
    最近更新 更多