DrawPacMan pacman = new DrawPacMan();
DrawPacMan ghost1 = new DrawPacMan();
DrawPacMan ghost2 = new DrawPacMan();
AffineTransform pac = new AffineTransform();
public void setPacManView(int waarde) {
// set the view of pacman
switch (waarde) {
case 0 :
// here one view of pacman
break;
case 1 :
// here one view of pacman
break;
case 2 :
// here one view of pacman
break;
case 3 :
// here one view of pacman
break;
}
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
// pacman movement
diameter = 75;
pacman.drawPacMan(g, getHorPlaats(), getVerPlaats(), diameter, Color.yellow);
// ghosts movement
int g1x;
for(g1x = 0; g1x < 10; g1x++) {
pacman.drawGhost(g, g1x, 40, diameter, Color.red);
}
pacman.drawGhost(g, 170, 70, diameter, Color.blue);
}
试试...
该演示设计允许图像通过虚拟天使(角度<0&>360)旋转,但基本概念是一样的...
public class TestFlipImage {
protected static final String IMAGE_PATH = "/path/to/your/image";
public static void main(String[] args) {
new TestFlipImage();
}
public TestFlipImage() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException ex) {
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
} catch (UnsupportedLookAndFeelException ex) {
}
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
BufferedImage image = null;
try {
image = ImageIO.read(new File(IMAGE_PATH));
} catch (IOException ex) {
}
JPanel mainPane = new JPanel(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
mainPane.add(new ImagePane(image, 0));
mainPane.add(new ImagePane(image, 90));
mainPane.add(new ImagePane(image, 180));
frame.add(mainPane);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class ImagePane extends JPanel {
private BufferedImage masterImage;
private BufferedImage renderedImage;
public ImagePane(BufferedImage image, int angle) {
masterImage = image;
applyRotation(angle);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(renderedImage.getWidth(), renderedImage.getHeight());
}
@Override
public Dimension getMinimumSize() {
return getPreferredSize();
}
protected int getVirtualAngle(int angle) {
float fRotations = (float) angle / 360f;
int rotations = (int) (fRotations - (fRotations / 1000));
int virtual = angle - (rotations * 360);
if (virtual < 0) {
virtual = 360 + virtual;
}
return virtual;
}
// The code is designed to rotate an image through 90 degree
// angles, but it can handle angle's less then 0 and greater then
// 360 degrees
public void applyRotation(int angle) {
// This will only work for angles of 90 degrees...
// Normalize the angle to make sure it's only between 0-360 degrees
int virtualAngle = getVirtualAngle(angle);
Dimension size = new Dimension(masterImage.getWidth(), masterImage.getHeight());
int masterWidth = masterImage.getWidth();
int masterHeight = masterImage.getHeight();
double x = 0; //masterWidth / 2.0;
double y = 0; //masterHeight / 2.0;
switch (virtualAngle) {
case 0:
break;
case 180:
break;
case 90:
case 270:
size = new Dimension(masterImage.getHeight(), masterImage.getWidth());
x = (masterHeight - masterWidth) / 2.0;
y = (masterWidth - masterHeight) / 2.0;
break;
}
renderedImage = new BufferedImage(size.width, size.height, masterImage.getTransparency());
Graphics2D g2d = renderedImage.createGraphics();
AffineTransform at = AffineTransform.getTranslateInstance(x, y);
at.rotate(Math.toRadians(virtualAngle), masterWidth / 2.0, masterHeight / 2.0);
g2d.drawImage(masterImage, at, null);
g2d.dispose();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
int width = getWidth() - 1;
int height = getHeight() - 1;
int x = (width - renderedImage.getWidth()) / 2;
int y = (height - renderedImage.getHeight()) / 2;
g2d.drawImage(renderedImage, x, y, this);
}
}
}
附加
本文向大家介绍js改变透明度实现轮播图的算法,包括了js改变透明度实现轮播图的算法的使用技巧和注意事项,需要的朋友参考一下 前面有分享过改变层级的轮播图算法,今天继续利用透明度来实现无位移的轮播图算法。 实现逻辑:将所有要轮播的图片全部定位到一起,即一层一层摞起来,并且利用层级的属性调整正确的图片顺序,将图片的透明度全部设置为0,然后在让初始的第一张图片的透明度为1即可,具体算法如下: 精彩专题分
问题内容: 有没有人对任何适用于Graph算法的Java库有丰富的经验。我已经尝试过JGraph并发现还可以,而且Google中有很多不同的产品。人们实际上在生产代码中成功使用了哪些东西,或者会推荐吗? 需要澄清的是,我不是在寻找可生成图形/图表的库,而是在寻找一种可用于图形算法的库,例如最小生成树,Kruskal算法的节点,边等。理想情况下,它具有一些良好的算法/数据一个漂亮的Java OO A
问题内容: 我需要为自己的Point类计算两个点之间的角度,以度为单位,Point a为中心点。 方法: 测试1://返回45 测试2://返回-90,预期值:270 如何将返回的结果转换为0到359之间的数字? 问题答案: 您可以添加以下内容: 顺便说一句,为什么您不想在这里使用双精度?
问题内容: http://upload.wikimedia.org/math/f/e/5/fe56529cdaaaa9bb2f71c1ad8a1a454f.png <-区域公式 我试图从2D笛卡尔坐标系中的3个点(x,y)计算三角形的面积。我假设我的上述公式正确产生了三角形的面积(如果不是,请更正我),但是我的编译器说“运算符- 无法应用于java.awt.Point,java.awt.Point
我正在尝试使用angular chartjs创建一个条形图,我需要一个在每个条形图上都可见的数据标签 例子:http://jsfiddle.net/uh9vw0ao/ 我尝试了以下代码在js: html代码如下: 上面的代码给出了数据集未定义的错误。和数据标签不可见。 请帮忙。
我的问题:我希望能够改变资源图像的亮度,并有三个实例作为ImageIcons。一个在50%的亮度(所以更暗),另一个在75%的亮度(稍微亮一点),最后一个在100%的亮度(与原始图像相同)。我还想保持透明度。 我试过的:我到处找了找,看起来最好的解决方案是使用,但我就是想不通。我不知道缩放因子和偏移量是怎么回事。这是我尝试的代码。 呼叫将是这样的: 这段代码会发生什么:图像看起来是“不可见的”,我