
简易画图工具的实现 2继续完善上篇简易画图工具的内容实现更多功能。橡皮擦功能实现功能要求橡皮擦使用粗线条使用后不改变其他图形的线条粗细。实现方法与绘制曲线类似使用和画布背景相同的颜色白色来覆盖原有图案实现擦除效果。if(橡皮擦.equals(name)){//复制画笔Graphics2Dg2(Graphics2D)gr.create();// 给橡皮擦单独设置粗线条g2.setStroke(newBasicStroke(8));g2.setColor(Color.WHITE);g2.drawLine(x1,y1,x4,y4);// 用完后释放不影响原画笔g2.dispose();x1x4;y1y4;}画笔粗细功能实现实现方法先用全局浮点变量strokeSize保存默认值封装统一方法setStroke()设置粗、细线条值在所有图形绘制执行前调用该方法。//定义全局变量publicfloatstrokeSize1.0f;//点击粗、细按钮elseif(粗.equals(str)){strokeSize3.0f;}elseif(细.equals(str)){strokeSize1.0f;//封装统一方法publicvoidsetStroke(floatsize){Graphics2Dg2(Graphics2D)gr;g2.setStroke(newBasicStroke(size));}//绘制各图形前调用该方法(以三角形为例)if(三角形.equals(name)){setStroke(strokeSize);gr.drawLine(x1,y1,x3,y3);gr.drawLine(x2,y2,x3,y3);flag1;System.out.println(x3 x3 y3 y3);}分形树的绘制实现原理本程序采用 IFS 迭代函数系统绘制分形树。通过7 组固定仿射变换参数随机选择一组对坐标进行迭代计算不断生成新的点并绘制最终自动形成树状结构。步骤1.定义变换参数使用 7 组 a、b、c、d、e、f 控制树的分支、倾斜、生长方向。2.迭代计算坐标循环 50000 次每次随机选一组参数使用公式计算新点nxa*xb*ye nyc*xd*yf3.坐标映射将计算出的坐标放大并平移到画布中央让树完整显示。4.绘制点使用 drawLine 绘制单个点大量点聚集形成树的纹理与枝干。代码说明IFS 参数数组privatedouble[][]treeParams{{0.05,0.00,0.00,0.40,-0.06,-0.47},{-0.05,0.00,0.00,-0.40,-0.06,-0.47},{0.03,-0.14,0.00,0.26,-0.16,-0.01},{-0.03,0.14,0.00,-0.26,-0.16,-0.01},{0.56,0.44,-0.37,0.51,0.30,0.15},{0.19,0.07,-0.10,0.15,-0.20,0.28},{-0.33,-0.34,-0.33,0.34,-0.54,0.39}};迭代绘制for(inti0;i50000;i){intidxran.nextInt(7);doubleatreeParams[idx][0];doublebtreeParams[idx][1];//使用参数doublenxa*xb*ye;doublenyc*xd*yf;intdrawX(int)(nx*200400);intdrawY(int)(-ny*200600);g2.drawLine(drawX,drawY,drawX,drawY);xnx;yny;}