我有一个非常简单的动画,一个大字体的文本连续(逐个像素)向左移动.首先将文本转换为图像,然后启动计时器任务,重复(每10-20毫秒)将图像的x坐标递减1,然后执行重绘().
该程序在某些系统上显示出奇怪的行为.在我的电脑上使用nVidia卡,它运行顺畅.在我的Vaio笔记本电脑上,在BeagleBoneBlack和朋友的Mac上,它会严重破坏.它似乎暂停一段时间,然后跳到左边大约10个像素,再次暂停,依此类推.
我是什么树桩在这些系统上动画的事实,只有当你不触摸鼠标口吃.只要您在窗口内移动鼠标光标,无论速度有多慢,或者拖动窗口本身,动画都会非常流畅!
任何人都能解释一下吗?这是程序:
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
class Textimg extends JComponent
{
String str;
Font font;
int x = 0;
final int ytext = 136;
Image img;
public Textimg(String s)
{
str = s;
font = new Font("Noserif", Font.PLAIN, 96);
setLayout(null);
}
protected void paintComponent(Graphics g)
{
if (img == null)
{
img = createImage(4800, 272);
Graphics gr = img.getGraphics();
gr.setFont(font);
gr.setColor(Color.BLACK);
gr.fillRect(0, 0, 4800, 272);
gr.setColor(new Color(135, 175, …Run Code Online (Sandbox Code Playgroud) 我想用Java的Canvas绘制,但是不能让它工作,因为我不知道我在做什么.这是我的简单代码:
import javax.swing.JFrame;
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Color;
public class Program
{
public static void main(String[] args)
{
JFrame frmMain = new JFrame();
frmMain.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmMain.setSize(400, 400);
Canvas cnvs = new Canvas();
cnvs.setSize(400, 400);
frmMain.add(cnvs);
frmMain.setVisible(true);
Graphics g = cnvs.getGraphics();
g.setColor(new Color(255, 0, 0));
g.drawString("Hello", 200, 200);
}
}
Run Code Online (Sandbox Code Playgroud)
窗口上没有任何内容.
我错误地认为Canvas是纸,而Graphics是我的铅笔吗?它是如何工作的?