96编辑器旗下产品
找图
终身
ID:0
到期时间:永久
退出登录
您的位置:首页 > 百科管理 > 详情

orig作图-为什么重写Jpanel 的paint方法后 出现这种效果呀 ??点击按钮在画图就多出了按钮的图案。 代码如下:

原创:找图网 2023-04-19 23:04:28
  • 如何把origin图例周围的框去掉

  • 方法步骤如下:

    1、首先打开计算机,在计算机内打开origin,在origin内打开图例文件。

    2、双击图例空白处,会弹出Plot对话框,然后在窗口左边选择graph的名称。

    3、点开Legend/Title,将其最后一个选项对勾去掉,点击OK即可。

  • 为什么重写Jpanel 的paint方法后 出现这种效果呀 ??点击按钮在画图就多出了按钮的图案。 代码如下:

  • 这是因为paint(Graphics g)是直接往屏幕上画,就好比屏幕是一副油画,不管屏幕上原来有什么东西,draw都只会往上添笔画。

    每次paint的时候都一定要先清理屏幕clearRect(0, 0, getWidth(), getHeight())

    如果不这样的话屏幕上就有可能留下各种的图案。而且并不是说没有没有残留图片就没有问题了,因为Panel不会记住上副图片,你可以试着把窗口最小化一下:复原后什么都没有了,因为操作系统也不会记住先前数据,只会给清屏。

    解决办法是使用一个BufferedImage,把当前屏幕内容存在内存里,每次paint的时候往BufferedImage上画,再把BufferedImage画到清空的屏幕上。

    要注意的BufferedImage的大小是固定的,但窗口的大小是可变的,所以需要监听窗口大小变更,重新创造一个符合屏幕大小的BufferedImage。

    可用代码如下:

    class DrawLine extends JPanel implements ComponentListener {

    Point start;

    Point end;

    Point temp;

    int which;

    Point linestart;

    Point lineend;

    BufferedImage cache;

    public DrawLine() {

    ();

    = new Point(0, 0);

    = new Point(0, 0);

    = new Point(0, 0);

    = new Point(0, 0);

    = new Point(0, 0);

    which = 0;

    (new MouseMotionListener() {

    @Override

    public void mouseMoved(MouseEvent e) {

    (e.getX());

    (e.getY());

    (e.getX());

    (e.getY());

    (e.getX());

    (e.getY());

    (e.getX());

    (e.getY());

    }

    public void mouseDragged(MouseEvent de) {

    (lineend);

    (end);

    (());

    (());

    (());

    (());

    repaint();

    }

    });

    }

    public void paint(Graphics g_orig) {

    if(cache!=null) {

    Graphics g = (); //替换Graphics,转往缓存上画图

    if (which == 3) {

    g.setColor();

    g.fillArc((), (), 50, 50, 0, 360);

    }

    if (which == 4) {

    //清空屏幕,BufferedImage默认背景为黑色,需要手动设置颜色

    g.setColor();

    g.fillRect(0, 0, getWidth(), getHeight());

    which = 0;

    }

    if (which == 0) {

    g.setColor();

    g.drawLine((), (), (),

    ());

    }

    if (which == 1) {

    g.setColor();

    g.drawLine((), (), (), ());

    g.setColor();

    g.drawLine((), (), (), ());

    }

    if (which == 2) {

    g.setColor();

    g.drawArc((), (), () - (),

    () - (), 0, 360);

    g.setColor();

    g.drawArc((), (), () - (),

    () - (), 0, 360);

    }

    //清屏,把缓存画到屏幕上

    g_(0, 0, getWidth(), getHeight());

    g_(cache, 0, 0, null);

    }

    }

    public static void main(String[] args) {

    DrawFrame d = new DrawFrame();

    d.show();

    }

    @Override

    public void componentHidden(ComponentEvent arg0) {

    }

    @Override

    public void componentMoved(ComponentEvent arg0) {

    }

    @Override

    public void componentResized(ComponentEvent arg0) { //这个方法会在程序启动的时候被执行一次,所以不用在别的地方初始化缓存

    //创建新的缓存

    BufferedImage newCache = new BufferedImage(getWidth(), getHeight(), _INT_ARGB);

    if(cache!=null) { //把上个缓存的内容画到新缓存上

    //这个地方如果Java版本太老无法编译的话的话改用getGraphics()

    ().drawImage(cache, 0, 0, null);

    }

    cache = newCache; //交替缓存

    }

    @Override

    public void componentShown(ComponentEvent arg0) {

    }

    }

    class DrawFrame {

    private DrawLine line;

    private JFrame frame;

    private JPanel buttons;

    private JButton change;

    private JButton clean;

    private JLabel label;

    public DrawFrame() {

    line = new DrawLine();

    (true);

    frame = new JFrame();

    buttons = new JPanel();

    label = new JLabel("dxx");

    change = new JButton("CHANGE");

    clean = new JButton("CLEAR");

    (new MouseAdapter() {

    public void mouseClicked(MouseEvent e) {

    ++;

    (true);

    if ( == 4)

    = 0;

    }

    });

    (new MouseAdapter() {

    public void mouseClicked(MouseEvent e) {

    = 4;

    (true);

    ();

    }

    });

    (change);

    (clean);

    (new BorderLayout());

    ();

    // (label,);

    (line, );

    (buttons, );

    (line); //监听大小变更

    }

    public void show() {

    (600, 400);

    (true);

    (null);

    (_ON_CLOSE);

    }

    }

  • 有关全等三角形的题,最好附答案,两次或三次全等的

  • ⑴点E在△ABC外部,点D在BC边上,DE交AC于点F,若∠1=∠2=∠3,AC=AE,试说明:△ABC≌△ADE的理由。

    图:

    等腰直角三角形ABC,AB⊥CB,D是AB边的中点,做∠ADE=∠BDC,连接EB,求证BE⊥CD。

    ⑶已知等边△ABC中,D、E分别是AC、BC上的点,BD、AE相交于一点N,BM⊥AE于M,若AD=CE。

    (1)求证:△ABD≌△AEC

    ⑷△ABC中,D、E分别是AC,BC上的点,若△ADB≌△EDB≌△EDC,则∠C的度数是( )

    A.15° B.20° C.25° D.30°

    ⑸两个三角形有两边和一角对应相等,则两个三角形( )

    A.一定全等 B.一定不全等 C.可能全等,可能不全等 D.以上都不是

    ⑹.四边形ABCD中,AD‖BC,若∠DAB的平分线AE交CD于E,连接BE,且BE恰好平分∠ABC,找出AB的长与AD+BC的长的大小关系,并证明你的结论。

    ⑺已知P为等边三角形ABC内的一点,角APB、角BPC、角CPA的度数分别为100、120、140度,那么,以AP、BP、CP为边的三角形的三个内角之比为?

    ⑻在三角形ABC中,AB=AC,D,E,F分别在AB,BC,AC上,且BD=CE,∠DEF=∠B,则图中是否存在和三角形BDE全等的三角形?并证明~

    ⑼1.如果三角形ABC全等于三角形DEF ,三角形ABC的周长是30cm,AB=8cm,AC=13cm, ∠C= ∠ F,则EF=?

    ⑽三角形ABC,AD平分角A,D于点BC上.角C=2角B

    求证AB=AC+CD(自己作图)

    答案,,似乎好麻烦咧 (采纳一下吧)

    最新文章 更多
    最新素材 更多
    公司介绍 网站地图 图片资讯
    Copyright © 2010-2022 山东找图网络科技有限公司  鲁ICP备18007836号-3  邮箱:15653358549@163.com