资讯详情

java 绘图板 如何实现画直线的功能

目前,我们正在制作一个绘图板,在实现绘制直线功能时遇到一些问题。我认为实现的绘制直线功能不是鼠标点的起点,然后点的终点,生成直线。但在点击一个固定的起点后,鼠标被拖动,整条线随之而来...

目前,我们正在制作一个绘图板,在实现绘制直线功能时遇到一些问题。我认为绘制线性功能不是鼠标点的起点,然后点的终点,生成线性。但在点击固定起点后,鼠标拖动,整条线随鼠标移动而变化。当然,起点总是固定的。

(注:startX、startY是线的起点坐标,用鼠标按下监控,preX,preY是上一点的坐标。

g.drawLine(startX, startY, preX, preY);

preX=e.getX();

preY=e.getY();

随着鼠标的拖曳,电脑不断画出新的线。

原理是在鼠标拖曳的过程中e.getX()和e.getY(),即鼠标坐标不断变化,画布上不断画出新线。

后来在网上找了解决的方法,那就是用背景色的线来覆盖原来画的线,简单点说就是,移动鼠标的过程中,会不断画新的黑色的线,画第n条黑线的同时,就会在n-在黑线的位置画一条白线覆盖n-1位置的黑线使上一条线消失。

监控代码如下:

g.setColor(foreColor);//获取前景色,准备画新线

g.drawLine(startX, startY, e.getX(), e.getY();//画新线

if(preX!=e.getX()||preY!=e.getY()){

g.setColor(backColor);//获取背景色,准备覆盖旧线

g.drawLine(startX, startY, preX, preY);///画一条与背景色相同的线覆盖一条线

}

setPre(e);

嗯,说了这么多,我的问题来了,因为我用背景颜色相同的线来覆盖旧线。通过这个原理,我真的可以画一条可以拖动的直线。问题是,如果原画布上已经有了图案,当我的线扫过图案,用背景色的线覆盖旧线时,我实际上覆盖了图案。这就是我所纠结的。

如图所示:鼠标一拖动,就会不断画出新的黑线。同时,画一条旧的白线覆盖着一条黑线,但如果原来有图案,白线也会覆盖原来的图案。

展开

标签: 旧线网套连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司