1、java爱心代码的其中一行出现了错误。
2、在输入代码循环的时候没有输入完整。以上就是java爱心代码运行爱心扭曲的原因。java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。
题主肯定已经知道解决方式了, 我这里还是写一下一个可行的方法, 方便之后其他人检索.
使用
Graphics.copyArea(int x,int y,int width,int height, int dx, int dy)这个方法
用处是将x, y 这个位置上的像素点, 复制到x, y 基础上偏移了dx, dy 后的这个位置上.
手头没有代码, 大概讲一下我自己实现过的思路
图像的宽高 width, height. 偏移量 d, 当前的行/列 index
遍历高度(纵轴)上的每一行像素, 每一行的像素都横向偏移d.
g.copyArea(0, index, width, 1, d, 0)当然, 之后要拿背景色填充这一行偏移后首尾的空缺
g.drawLine(d, index, 0, index)g.drawLine(d + width, index, width, index)
然后宽度方向上的遍历也同理
g.copyArea(index, 0, 1, height, 0, d)g.setColor(背景色)
g.drawLine(index, d, index, 0)
g.drawLine(index, d + height, index, height)
当你的偏移量d 是固定的值的时候, 这样的效果只是平移.
但是, 如果每行每列偏移量是一个随机值, 或者根据你自己的一个公式计算出来的一个值, 那么, 就出现扭曲的效果了.
以上.
先给你个最简单的例子,你就明白应该怎么做了:如果叫你用 graphics2d 去画一条线,你知道是 x1, y1, --->x2, y2 两个点,然后使用 drawline 方法就可以实现画这一条直线,
如果叫你用 graphics2d 去画一条正弦曲线,你就知道不是两点的方法能画出来的了。
所以,上面的例子其实是说,你在网上找一个 jar 类库专门用来实现这种功能的就可以了。