有没有人做过交互的绘制线的程序。如果没有涉及过java绘图部分请不必进入!

时间:2023-02-20 23:40:53
有没有人做过交互的绘制线的程序。就是按照自己想要的需要把线绘制到图形文件中,还可以按照需要通过鼠标点选绘制的线,取得它的一些属性信息。 
这个在位图中实现的可能性几乎没有,在矢量图中实现的可能还存在!
但我不知道具体的思路,所以把这个感兴趣的问题放在这里征询一下高手的意见!
不知道有没有人能够回复?

7 个解决方案

#1


鼠标点绘制的线后,你要取得它的什么属性呢?

#2


看看以前的帖子
http://expert.csdn.net/Expert/topic/1330/1330628.xml?temp=.9152338

#3


就是点在直线上的判断喽,用一下数学公式不就好了。点就是指鼠标点击的时候的坐标。如果判断在直线上(判断方法初中几何就有学)就取得你要的信息好了。位图我不太清楚了。矢量图信息你应该是事先有保存或者根据两点坐标可以计算得吧

#4


to  beyond_xiruo() 
你的那段程序看过了,有几个问题不是很明白:
。。。。
canvas1 canvas1_1=new canvas1(Color.red,can);
canvas1 canvas1_2=new canvas1(Color.blue,can);
。。。。
中间使用的canvas1是什么?
java 有一个Canvas类,但它的构造函数没有这种格式的。

另外我调试你的程序,前提是将所有的canvas1 改为Canvas并且修改了new canvas1(Color.red,can);
可以通过编译了,可运行的时候没什么效果了,看来是我修改的问题,
退出的时候,有一个提示错误:
java.io.WriteAbortedException: Writing aborted by exception; java.io.NotSerializ
ableException: java.awt.image.BufferedImage

#5


看了一下java的有关于绘图的部分,简单的绘制线段如:Graphics.drawLine(x1,y1,x2,y2);感觉好像是在画位图。功能描述也过于简单了!假定一个使用者,不可能先想好了位置(屏幕坐标),然后告诉编程人员在具体位置绘制。
至少的流程是:
准备:
有一个输入坐标的窗口,或者是通过鼠标左键点击,返回鼠标的点击位置坐标,然后传给drawLine方法。至于第一种想法,应该是比较好实现,做一个录入的JFrame就可以了。第二种的没有尝试过,不知道有没有人做过?
但是有一个问题,就是坐标转换问题,这个需要将实际坐标和屏幕坐标关联,做一个转换的运算。
绘制:
我们纵观所有的绘图软件,几乎都是采用鼠标托动的交互绘图,也就是说在第一次鼠标左键确认了起点以后,第二次点击取得终点(这是对于最简单的线段的绘制,不考虑到右键取消等等更为完善的功能),然后在这两点间绘制线段,这个时候再调用绘图方法来绘制线段。
刷新:
绘制完成了以后,需要显示出来,那就需要刷新,在容器中显示出来,好在这一步不用我们自己去想,java已经提供这个功能了。

以上只是一个简单的鼠标绘制线段的构思,我在考虑具体的实现。

拾取属性:
拾取:一般来讲,都是通过鼠标的点击选择要拾取的线段对象,这一点上,我不止到是否是按照bluesmile979(笑着) 说的那种方法来计算一下,但是这个鼠标事件真的不好确定。不知道谁有比较明确的思路?
读取属性:
作为一个对象,它有自己一些属性信息,最简单的就是坐标位置和线型线宽之类。
此时我有一个想法就是如果我自己加一个属性可不可以?在开始绘制的时候,我就加一个新的属性,例如ID编号,这样子可表示不同的线段对应不同的编号。在拾取的时候我还可以得到它的属性中的这个新增属性。
显示属性信息:
这一部就是通常的展示给用户看的东西,一般来讲是做一个JFrame,然后将取得的这些属性显示在窗口里,更深一步的是存储为一个文件形成报表放置。

以上是我对这个绘图功能的一个想法,这次写的算是比较的清晰明了,不知道有没有也同样感兴趣的高手来指导一下!!!

#6


canvas1是自定义的类,继承了java.awt.Canvas

#7


我想知道的部分,好像都没有显示出来!
看来这个贴子的收益几乎为零了!

现在问一下,有没有人用java绘制过矢量图形?
能否提供一点有价值的参考?

#1


鼠标点绘制的线后,你要取得它的什么属性呢?

#2


看看以前的帖子
http://expert.csdn.net/Expert/topic/1330/1330628.xml?temp=.9152338

#3


就是点在直线上的判断喽,用一下数学公式不就好了。点就是指鼠标点击的时候的坐标。如果判断在直线上(判断方法初中几何就有学)就取得你要的信息好了。位图我不太清楚了。矢量图信息你应该是事先有保存或者根据两点坐标可以计算得吧

#4


to  beyond_xiruo() 
你的那段程序看过了,有几个问题不是很明白:
。。。。
canvas1 canvas1_1=new canvas1(Color.red,can);
canvas1 canvas1_2=new canvas1(Color.blue,can);
。。。。
中间使用的canvas1是什么?
java 有一个Canvas类,但它的构造函数没有这种格式的。

另外我调试你的程序,前提是将所有的canvas1 改为Canvas并且修改了new canvas1(Color.red,can);
可以通过编译了,可运行的时候没什么效果了,看来是我修改的问题,
退出的时候,有一个提示错误:
java.io.WriteAbortedException: Writing aborted by exception; java.io.NotSerializ
ableException: java.awt.image.BufferedImage

#5


看了一下java的有关于绘图的部分,简单的绘制线段如:Graphics.drawLine(x1,y1,x2,y2);感觉好像是在画位图。功能描述也过于简单了!假定一个使用者,不可能先想好了位置(屏幕坐标),然后告诉编程人员在具体位置绘制。
至少的流程是:
准备:
有一个输入坐标的窗口,或者是通过鼠标左键点击,返回鼠标的点击位置坐标,然后传给drawLine方法。至于第一种想法,应该是比较好实现,做一个录入的JFrame就可以了。第二种的没有尝试过,不知道有没有人做过?
但是有一个问题,就是坐标转换问题,这个需要将实际坐标和屏幕坐标关联,做一个转换的运算。
绘制:
我们纵观所有的绘图软件,几乎都是采用鼠标托动的交互绘图,也就是说在第一次鼠标左键确认了起点以后,第二次点击取得终点(这是对于最简单的线段的绘制,不考虑到右键取消等等更为完善的功能),然后在这两点间绘制线段,这个时候再调用绘图方法来绘制线段。
刷新:
绘制完成了以后,需要显示出来,那就需要刷新,在容器中显示出来,好在这一步不用我们自己去想,java已经提供这个功能了。

以上只是一个简单的鼠标绘制线段的构思,我在考虑具体的实现。

拾取属性:
拾取:一般来讲,都是通过鼠标的点击选择要拾取的线段对象,这一点上,我不止到是否是按照bluesmile979(笑着) 说的那种方法来计算一下,但是这个鼠标事件真的不好确定。不知道谁有比较明确的思路?
读取属性:
作为一个对象,它有自己一些属性信息,最简单的就是坐标位置和线型线宽之类。
此时我有一个想法就是如果我自己加一个属性可不可以?在开始绘制的时候,我就加一个新的属性,例如ID编号,这样子可表示不同的线段对应不同的编号。在拾取的时候我还可以得到它的属性中的这个新增属性。
显示属性信息:
这一部就是通常的展示给用户看的东西,一般来讲是做一个JFrame,然后将取得的这些属性显示在窗口里,更深一步的是存储为一个文件形成报表放置。

以上是我对这个绘图功能的一个想法,这次写的算是比较的清晰明了,不知道有没有也同样感兴趣的高手来指导一下!!!

#6


canvas1是自定义的类,继承了java.awt.Canvas

#7


我想知道的部分,好像都没有显示出来!
看来这个贴子的收益几乎为零了!

现在问一下,有没有人用java绘制过矢量图形?
能否提供一点有价值的参考?