`
星海孤舟
  • 浏览: 68980 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论

awt画带箭头的函数

 
阅读更多

public void drawAL(int sx, int sy, int ex, int ey, Graphics2D g2)
    {
        g2.setStroke(new BasicStroke(1.5f)) ;
        double H = 8; // 箭头高度  
        double L = 3.5; // 底边的一半  
        int x3 = 0;
        int y3 = 0;
        int x4 = 0;
        int y4 = 0;
        double awrad = Math.atan(L / H); // 箭头角度  
        double arraow_len = Math.sqrt(L * L + H * H); // 箭头的长度  
        double[] arrXY_1 = rotateVec(ex - sx, ey - sy, awrad, true, arraow_len);
        double[] arrXY_2 = rotateVec(ex - sx, ey - sy, -awrad, true, arraow_len);
        double x_3 = ex - arrXY_1[0]; // (x3,y3)是第一端点  
        double y_3 = ey - arrXY_1[1];
        double x_4 = ex - arrXY_2[0]; // (x4,y4)是第二端点  
        double y_4 = ey - arrXY_2[1];

        Double X3 = new Double(x_3);
        x3 = X3.intValue();
        Double Y3 = new Double(y_3);
        y3 = Y3.intValue();
        Double X4 = new Double(x_4);
        x4 = X4.intValue();
        Double Y4 = new Double(y_4);
        y4 = Y4.intValue();
        // 画线  
        g2.drawLine(sx, sy, ex, ey);
        GeneralPath triangle = new GeneralPath();
        triangle.moveTo(ex, ey);
        triangle.lineTo(x3, y3); 
        triangle.lineTo(x4, y4);
        triangle.closePath();
        //实心箭头  
        g2.fill(triangle);
        //非实心箭头  
        //g2.draw(triangle);  

    }

    // 计算  
    public double[] rotateVec(int px, int py, double ang, boolean isChLen, double newLen)
    {

        double mathstr[] = new double[2];
        // 矢量旋转函数,参数含义分别是x分量、y分量、旋转角、是否改变长度、新长度  
        double vx = px * Math.cos(ang) - py * Math.sin(ang);
        double vy = px * Math.sin(ang) + py * Math.cos(ang);
        if (isChLen) {
            double d = Math.sqrt(vx * vx + vy * vy);
            vx = vx / d * newLen;
            vy = vy / d * newLen;
            mathstr[0] = vx;
            mathstr[1] = vy;
        }
        return mathstr;
    }

分享到:
评论

相关推荐

    huarongdao.rar_New People

    在本游戏中,自编写了一个代表华容道人物的类,实现华容道游戏中人物的构造,画出华容道的边界,提示曹操逃出位置和按键规则,点击相应的人物,然后按键盘上的上下左右箭头移动,判断是否和其它人物或下边界出现重叠,...

    设置光标的源代码资源

    - 在Java中,我们可以使用`java.awt.Cursor`类的`setCursor`方法,传入`Cursor`类型的常量来设置光标。 - 在Python的Tkinter库中,使用`tkinter`的`cursor`属性来改变光标。 2. **光标类型**: - 不同的环境提供...

    els.rar_els俄罗斯方块

    开发者还可能使用了事件监听器来响应用户的键盘输入,例如WASD或箭头键来控制方块的移动和旋转。同时,为了实现方块的动画效果,游戏循环可能采用定时器或者延时函数来控制每帧的时间间隔。 在分析源代码时,你可以...

    moveplane.rar_键盘 移动_飞机

    例如,上箭头键可能会使飞机的y坐标减小,下箭头键则增加,左箭头和右箭头相应地改变x坐标。 3. **颜色处理**:描述中提到飞机有颜色变化,这可能涉及到色彩理论和图形渲染。开发者可能会使用RGB、HSV等色彩模型来...

    JTree设置不同图标

    在测试函数中,我们可以使用下面的代码来创建一个树,并将其显示出来: ```java import java.awt.BorderLayout; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing....

    2021-2022计算机二级等级考试试题及答案No.19236.docx

    22. 类构造函数:在C++中,给定的构造函数会将a设为4,b设为a与5的乘积,所以x.a是4,x.b是20。 23. 表达式计算:在某些编程语言中,'M+N'会被解释为字符串连接,因此1+&K的结果是1232。 24. 工具栏操作:用户可以...

    2021-2022计算机二级等级考试试题及答案No.10770.docx

    15. Swing组件:Swing是在AWT基础上构建的新图形界面系统,提供了AWT的功能,且组件由Java代码实现,不是重量级组件。 16. 线程生命周期:线程的start()方法使其进入就绪状态,run()方法执行完毕或异常终止则进入...

    2021-2022计算机二级等级考试试题及答案No.17333.docx

    14. 数据流图:在数据流图中,带有箭头的线段表示数据流,即信息的流向。 15. 选择多个文件:在Windows资源管理器中,选择不连续的多个文件需先按住Ctrl键再逐个单击。 16. JavaScript概述:JavaScript是一种...

    取当前鼠标指针形状.rar

    例如,在C++中,我们可以使用`GetCursorInfo()`函数,而在Java中,可以利用`java.awt.MouseInfo.getPointerInfo().getCursor()`方法获取鼠标信息。 除了获取当前形状,有时我们还需要能够改变鼠标形状,这同样可以...

    2021-2022计算机二级等级考试试题及答案No.12161.docx

    26. AWT布局管理器:Java AWT中包括FlowLayout、BorderLayout、CardLayout和GridLayout等多种布局管理器。 27. 资源管理器:带“+”的文件夹表示包含子文件夹,可展开。 28. 插入声音:在Word中,"联机剪辑"功能...

    取当前鼠标指针形状.e.rar

    例如,箭头形状通常表示一般操作,而沙漏形状表示系统正在等待响应。在各种操作系统中,如Windows、Mac OS或Linux,都有预定义的鼠标指针形状,开发者可以通过编程接口(API)来访问和修改这些形状。 在Windows平台...

    模仿QQ截图

    C#还支持Windows API调用,如user32.dll中的PrintWindow函数,可以获取任意窗口的截图。结合WinForm或WPF,可以实现类似QQ截图的交互式界面,包括选择区域、添加标注等功能。 对于JAVA,我们可以利用java.awt.Robot...

    2021-2022计算机二级等级考试试题及答案No.1762.docx

    6. 函数变量作用域:在不同函数中可以使用同名变量,函数内部定义的变量仅在该函数内部有效,局部变量在复合语句中定义的有效范围仅限于该复合语句,而不是整个函数。 7. Java InputStream合并:`...

    2021-2022计算机二级等级考试试题及答案No.12943.docx

    17. Swing是AWT的增强和扩展,两者可以在GUI程序中同时使用,但AWT中的组件不是从Swing继承的。 18. 可以设置“字段大小”属性的数据类型通常是文本(Text)。 19. DataSet使用XML来描述数据,具有跨平台特性。 ...

    根据键盘能动的点

    这通常通过监听键盘输入事件并在事件触发时调用特定函数来实现。 首先,我们需要理解基本的事件处理机制。在大多数编程语言中,如Python、Java或C#,都有库或框架提供事件驱动编程的支持。例如,Python的pygame库...

    java汽车游戏源码

    源码中可能会有专门的函数来检测赛车与其他物体(如障碍物、边界)的碰撞,一旦发生碰撞,游戏会根据设定的规则作出反应,如减慢赛车速度、重新开始游戏等。 此外,游戏可能会有一个主类(Main class)负责初始化和...

    2021-2022计算机二级等级考试试题及答案No.4547.docx

    20. **Excel命令**:在Excel中,带有右箭头的命令通常表示该命令具有子菜单,展开后会有更具体的选项。 21. **系统信息查看**:在Windows中,可以通过控制面板的“系统”命令或右键点击“我的电脑”来查看系统的...

    2021-2022计算机二级等级考试试题及答案No.250.docx

    10. JavaScript确认对话框:在JavaScript中,可以使用`confirm()`函数创建一个确认对话框,询问用户是否执行某个操作,如删除。 11. Java源文件与类:一个源文件最多只能包含一个公共类,但可以包含多个非公共类。 ...

    2021-2022计算机二级等级考试试题及答案No.14918.docx

    - 快捷方式是文件或文件夹的一个链接,图标左下角有一个小箭头。 ### 16. Access对象 - Access关系数据库中的对象不包括 **Word文档**。主要对象包括表、查询、窗体、报表、宏和模块等。 ### 17. 算法有穷性 - ...

    贪吃蛇小游戏源码JAVA

    1. **JAVA基础语法**:作为源码的基础,对JAVA语言的基本结构、数据类型、控制流程(如if语句、for循环、while循环)以及函数的理解至关重要。源码中的类定义、方法声明和变量声明都是JAVA语法的体现。 2. **AWT库*...

Global site tag (gtag.js) - Google Analytics