今天上课C++老师在说异或位运算的时候,他提到了橡皮筋绘画技术:当你按下鼠标时然后拖动鼠标可以随意改变线的方向,在没有这个技术之前必须将原来的线擦掉这样会导致一些图形交点处被擦掉。它为制图业做出了很大的贡献,于是,觉得它很有意思。但是,c++实现比较难,我就试着用java实现。
流程:获得鼠标点下的坐标,拖动鼠标的坐标,最后是释放鼠标时画出线
代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
* 创建一个橡皮筋划线类
*
* @author Administrator
*
*/
public class DrawLine extends JFrame {
private int startX, startY, endX, endY;
private Graphics g;
private Image img;
public DrawLine() {
// 添加鼠标移动监听
this.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent me) {
endX = me.getX();
endY = me.getY();
repaint();
}
});
// 添加鼠标事件监听
this.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent me) {
startX = me.getX();
startY = me.getY();
}
public void mouseReleased(MouseEvent arg0) {
g.drawLine(startX, startY, endX, endY);// 加一条直线至内存Graphics
}
});
this.setBounds(200, 200, 300, 300);
this.setLocationRelativeTo(null);
this.setVisible(true);
this.setDefaultCloseOperation(3);
img = createImage(getSize().width, getSize().height);
g = img.getGraphics();
}
/**
* 划线方法
*/
public void paint(Graphics g) {
super.paint(g);
g.drawImage(img, 0, 0, this);// 先把之前保存在内存的Image画上
g.drawLine(startX, startY, endX, endY);
}
public static void main(String[] args) {
new DrawLine();
}
}
分享到:
相关推荐
在OpenGL中实现橡皮筋技术_并学会简单的鼠标键盘交互式设备的使用以及交互式绘图技术的实现。
mfc 橡皮筋技术 比较简单的!!
C++ 橡皮筋技术画矩形 橡皮筋技术 拖曳 动态
mfc 橡皮筋技术 大家可以看一下!!
橡皮筋技术
一、实验内容 1. 实现点、直线、三角形、矩形、多边形的绘制。 2. 必须实现的技术手段: 菜单、网格、橡皮筋、草拟技术、约束、引力域 3. 可选技术手段: 拾取、旋转、形变
c++中的橡皮筋技术 绝对实用 适合初学者 很好用 代码也任意修改!
人机交互实现橡皮筋技术,直线,圆,矩形,椭圆等
计算机图形学基础(第二版)OpenGL橡皮筋技术改良版,
1) 将像素网格表现出来,建立网格坐标系...2) 用橡皮筋的形式输入参数 3) 鼠标移动时,显示鼠标当前位置 4) 显示判别式的计算过程和下一点的选择策略 5) 记录生成点的坐标,建议用表的形式 6) 图形生成过程可以重复进行
这是一个使用橡皮筋技术实现的绘图示例,橡皮筋技术示例可任意改变图形大小
橡皮筋技术,实现直线,矩形,圆,另外增加功能椭圆的绘制
人机交互实现橡皮筋技术,文件传输,批处理,dos命令等实现
C#橡皮筋技术画矩形和线,采用BufferedGraphicsManager实现,避免了ControlPaint.DrawReversibleLine造成的问题
里面包括:画圆 矩形平移 双三角画图及平移 拖动技术 橡皮筋技术 旋转 几个方面的编程
基于C++ OpenGL/GLUT 实现的,橡皮筋式椭圆交互绘制,包含鼠标和键盘交互,以及菜单创建,可供计算机图形学实验参考。
TXT文档代码,运用vb将橡皮筋技术实现,在移动过程中线是虚的,当落下时在描出实线
MVC 实现了画橡皮筋直线。
python语言使用thinker制作的简易GUI,可通过鼠标拖拽或输入参数来绘制直线、矩形、圆。其中直线使用鼠标右击绘制有引力场的功能,当上一条直线的末端与本次直线的始端在一定范围内,将会自动连接到一起。...