请帮我看下这个drawImage()怎么画不出图像?

since2006 2004-07-24 10:43:03
Graphics g = playCanvas.getGraphics();
g.drawRect(0, 0, 120, 120);
imgFront = Toolkit.getDefaultToolkit().getImage("1.gif");
g.drawImage(imgFront, 20, 20, 20, 20, null);

第一个g.drawRect();能正确画出方框,
而第二个却什么反映都没有。
...全文
318 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
since2006 2004-07-24
  • 打赏
  • 举报
回复
改为this也不行。
Toolkit那个方法是在书上看到的。

原文:
要得到一个Toolkit对象,利用Toolkit类的静态getDefaultToolkit方法。
String name = "blue-ball.gif";
Image image = Toolkit.getDefaultToolKit().getImage(name);

我是照书上这样写的。。。
wtjd 2004-07-24
  • 打赏
  • 举报
回复

g.drawImage(imgFront, 20, 20, 20, 20, null);
将null改成this试试看,估计就是这个问题?

还有楼上兄弟,你的imgFront = Toolkit.getDefaultToolkit().getImage("1.gif");
Toolkit是什么对象?
louisqiang 2004-07-24
  • 打赏
  • 举报
回复
诸葛老兄,java的图象支持网络,所以在一般程序中应该使用MediaTrackor等待图象加载完毕,
若需要代码请说一下。
import java.awt.*;
import java.applet.*;
import java.awt.geom.*;
import java.awt.font.*;
import java.awt.image.*;
import java.net.URL;
import javax.swing.*;
public class AlphaCarton extends JFrame
{
public AlphaCarton()
{
setTitle("渐隐效果");
setSize(200,200);
Pic pp=new Pic();
getContentPane().add(pp,BorderLayout.CENTER);
show();
Thread carton=new Thread(pp);
carton.start();
}
public static void main(String[] args)
{
new AlphaCarton();
}
}
class Pic extends JLabel implements Runnable
{
private BufferedImage buff;
private BufferedImage outBuff;
private int width;
private int height;
private int change;
private boolean b=false;
public Pic()
{
Toolkit kit=getToolkit();
Image img = kit.createImage("jj.jpg");
MediaTracker tracker = new MediaTracker(this);
try
{
tracker.addImage(img, 0);
tracker.waitForAll();
}
catch (Exception e)
{
e.printStackTrace();
}

width = img.getWidth(this);
height = img.getHeight(this);

buff = new BufferedImage(width,height, BufferedImage.TYPE_INT_ARGB);
Graphics tempGr = buff.createGraphics();
tempGr.drawImage(img, 0, 0, this);

outBuff = new BufferedImage(width,height, BufferedImage.TYPE_INT_ARGB);
}
public void paint(Graphics g)
{
Graphics2D newG = (Graphics2D) g;
//change=200;
FadeImage(buff, outBuff,change);
newG.drawImage(outBuff, 0, 0, this);
}

public void run()
{
while(true)
{
if(!b)
{
change+=5;
if(change>=255)
{
change=255;
b=true;
}
}
else
{
change-=5;
if(change<=0)
{
change=0;
b=false;
}
}
repaint();
try
{
Thread.currentThread().sleep(100);
}
catch(Exception e)
{
System.out.println("Thread Error");
}
}
}

public void FadeImage(BufferedImage srcImage, BufferedImage destImage,int scale)
{
int width = srcImage.getWidth();
int height = srcImage.getHeight();
int alpha=0;

int oldpix = 0;
int newpix = 0;
int ired;
int igreen;
int iblue;

for (int i=0; i < height; i++)
{
for (int j=0; j < width; j++)
{

oldpix = srcImage.getRGB(j, i);
alpha=(oldpix>>24)&255;
ired=(oldpix>>16)&255;
igreen=(oldpix>>8)&255;
iblue=oldpix&255;

alpha=alpha-scale;
if (alpha<0)
{
alpha=0;
}
newpix=(alpha<<24)+(ired<<16)+(igreen<<8)+iblue;
destImage.setRGB(j, i, newpix);
}
}
}
}
tylty 2004-07-24
  • 打赏
  • 举报
回复
Toolkit是用来获取屏幕的各个参数的,如大小高低等。
since2006 2004-07-24
  • 打赏
  • 举报
回复
楼上的朋友,还是没有解决。

偶整理了一下。又开了个贴子。

麻烦帮偶看一下:

http://community.csdn.net/Expert/topic/3206/3206800.xml?temp=.7772028
registered 2004-07-24
  • 打赏
  • 举报
回复
你这样似乎是画不出来地...
你这个方法应该先让你那个 playCanvas 的类继承一下(例如JPanel)某个组件
然后 override 里面的 paintComponent, 然后用 paintComponent 那个 Graphics 参数画

一个好点的方法是
JLabel image = new JLabel("");
image.setIcon(Toolkit.getDefaultToolKit().getImage("blue-ball.gif"));
playCanvas.add(image);

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧