问题描述
给 出高电压 低电压 和 一个周期所用的时间 一周期分四段 给出每段所用的时间 如:附件里的图 问题补充:谢谢您的回答 可能是我没说清楚我的需求 下面我再补充一下 fb.bmp 是我画的 静态的图像 <br /><br /><br /><br />我标的有 1,2,3,4,5,6,7,8,9 这么几段 <br />1--8 代表的是时间(毫秒)也代表一个周期 (注:等下下次接收到1---9 之间的值变化的时候 图形做更新) <br /><br /> 9代表的是低电压 到高电压 间的值 (也可以说是两个 值) <br /><br /><br /> 我要的结果是 在给定的时间段内画这样的图形 纵坐标是电压 横坐标是时间 画完一屏 更新另一屏 如果一个周期(1--8)花了20毫秒 我一屏规定50毫秒 那就是画两个整屏和一个半屏 即【1---8,1---8,1----4】 下次接着画<br /><br />
解决方案
下面的是我自己写的一个,也不知道你的实际要求,加了点自己的想法public static void main(String[] args) throws IOException {//定义一个周期的4段时间,单位为秒,int[] circle = new int[]{10, 15, 20, 15};//定义1秒为5个像素点int scale = 5;//定义高压值、低压值,以左下角 20, -20为 0,0原点坐标,求得生成图片的宽、高//int h_voltage = 360, l_voltage = 220;//定义图像占用宽度,画布宽度int width = 0, img_width = 0;//定义图像占用高度,画布高度int height = 360, img_height = 0;for (int i : circle) {width += scale * i;}//宽度+左右各20px的空白img_width = width + 20 * 2;//图片高度 + 上下各20px的空白img_height = height + 20 * 2;BufferedImage buffImg = new BufferedImage(img_width, img_height,BufferedImage.TYPE_INT_RGB);Graphics2D g = buffImg.createGraphics();//将图像填充为白色g.setColor(Color.WHITE); g.fillRect(0, 0, img_width, img_height);//画坐标轴g.setColor(Color.BLACK); g.drawLine(20, height + 20, 20, 20);int z = 0;for (int j = 0; j < height/10; j++) {if(j % 5 == 0) {g.drawString(""+(10*5*z), 0, height + 20 + 5 - j*10);g.drawLine(20, height + 20 - j*10, 20 + 6, height + 20 - j*10);z++;} else {g.drawLine(20, height + 20 - j*10, 20 + 3, height + 20 - j*10);}}g.drawLine(20, height + 20, width + 20, height + 20);g.drawString("伏", 20 - 5, 20 - 5);g.drawString("秒", width + 20 + 5, height + 20 + 5);//画线g.setColor(Color.RED); g.drawPolyline(new int[]{20, 20 + 10*scale, 20 + 10*scale, 20 + (10+15)*scale, 20 + (10+15)*scale, 20 + (10+15+20)*scale, 20 + (10+15+20)*scale, 20 + (10+15+20+15)*scale, 20 + (10+15+20+15)*scale}, new int[]{img_height-(220 + 20), img_height-(220 + 20), img_height-(360 + 20 ), img_height-(360 + 20 ), img_height-(220 + 20), img_height-(220 + 20), img_height-(360 + 20 ), img_height-(360 + 20 )}, 8);ImageIO.write(buffImg, "jpeg", new File("C:\newImage.jpg"));}
解决方案二:
一看头晕,好复杂的数学加物理难题啊...
解决方案三:
用Java.awt.*包下的类去画,这个包下是画图的工具,靠坐标跟距离都可以