DebugGraphicsjava.lang.Object java.awt.Graphics javax.swing.DebugGraphics void drawLine(int x1, int y1, int x2, int y2) Overrides Graphics.drawLine. drawLine //此方法可以画 public void drawLine(int x1, int y1, int x2, int y2)Overrides Graphics.drawLine. Specified by: drawLine in class Graphics Parameters: x1 - the first point's x coordinate. y1 - the first point's y coordinate. x2 - the second point's x coordinate. y2 - the second point's y coordinate.
TO JavaVsNet(JavaVsNet)我知道啊,但是现在在做图形学的作业,必须自己用算法实现画线啊! 这个算法是一个个的填充象素,我找不到setPixs()函数 所有就想在自己定义的paintLine()函数里给drawLine()函数两个相等的端点画一个点
TO swallowsky(我是流氓,我怕谁)看到了,谢谢,
没想过,DebugGraphics中的源码为: public void drawLine(int x1, int y1, int x2, int y2) { DebugGraphicsInfo info = info(); if (debugLog()) { info().log(toShortString() + " Drawing line: from " + pointToString(x1, y1) + " to " + pointToString(x2, y2)); } if (isDrawingBuffer()) { if (debugBuffered()) { Graphics debugGraphics = debugGraphics(); debugGraphics.drawLine(x1, y1, x2, y2); debugGraphics.dispose(); } } else if (debugFlash()) { Color oldColor = getColor(); int i, count = (info.flashCount * 2) - 1; for (i = 0; i < count; i++) { graphics.setColor((i % 2) == 0 ? info.flashColor : oldColor); graphics.drawLine(x1, y1, x2, y2); Toolkit.getDefaultToolkit().sync(); sleep(info.flashTime); } graphics.setColor(oldColor); } graphics.drawLine(x1, y1, x2, y2); }试图追踪最终的实现,但是竟然到了sun.awt.SunGraphicsCallback,这是个没有公开源码的类,在rt.jar包里,晕...
用Dj可以反编译,不过里面的类库太多,有本书里专门讲过sun里没公开过的包,不过忘了名字
TO JavaVsNet(JavaVsNet):就是说DebugGraphics里也没有实现画线功能了? 一般在一个Frame里画线的时候 public class MyFrame extends JFrame { public MyFrame() { } public void paint(Graphics g) { g.drawLine(....); //这里的g是Graphics类型的,但是Graphics并没有 g.drawxxxx(); //实现drawLine()等函数,那么我想这个g应该是一个继承了 } //Graphics的类(并实现了drawLine()等抽象函数)的一个对象 //那这个类是什么啊????
DebugGraphicsjava.lang.Object
java.awt.Graphics
javax.swing.DebugGraphics
void drawLine(int x1, int y1, int x2, int y2)
Overrides Graphics.drawLine. drawLine
//此方法可以画
public void drawLine(int x1,
int y1,
int x2,
int y2)Overrides Graphics.drawLine. Specified by:
drawLine in class Graphics
Parameters:
x1 - the first point's x coordinate.
y1 - the first point's y coordinate.
x2 - the second point's x coordinate.
y2 - the second point's y coordinate.
这个算法是一个个的填充象素,我找不到setPixs()函数
所有就想在自己定义的paintLine()函数里给drawLine()函数两个相等的端点画一个点
public void drawLine(int x1, int y1, int x2, int y2) {
DebugGraphicsInfo info = info(); if (debugLog()) {
info().log(toShortString() +
" Drawing line: from " + pointToString(x1, y1) +
" to " + pointToString(x2, y2));
} if (isDrawingBuffer()) {
if (debugBuffered()) {
Graphics debugGraphics = debugGraphics(); debugGraphics.drawLine(x1, y1, x2, y2);
debugGraphics.dispose();
}
} else if (debugFlash()) {
Color oldColor = getColor();
int i, count = (info.flashCount * 2) - 1; for (i = 0; i < count; i++) {
graphics.setColor((i % 2) == 0 ? info.flashColor : oldColor);
graphics.drawLine(x1, y1, x2, y2);
Toolkit.getDefaultToolkit().sync();
sleep(info.flashTime);
}
graphics.setColor(oldColor);
}
graphics.drawLine(x1, y1, x2, y2);
}试图追踪最终的实现,但是竟然到了sun.awt.SunGraphicsCallback,这是个没有公开源码的类,在rt.jar包里,晕...
一般在一个Frame里画线的时候
public class MyFrame extends JFrame
{
public MyFrame()
{
}
public void paint(Graphics g)
{
g.drawLine(....); //这里的g是Graphics类型的,但是Graphics并没有
g.drawxxxx(); //实现drawLine()等函数,那么我想这个g应该是一个继承了
} //Graphics的类(并实现了drawLine()等抽象函数)的一个对象
//那这个类是什么啊????
那个g实际是继承自Graphics2D
可以使用inner类
在public void paint(Graphics g)里写一个类,类里有自己定义的画点,画线函数。然后就可以直接调用g.drawLine()函数画点了。(但是我觉得用画线的函数画点非常不爽,有没有直接画点的函数???)你们说呢???
Line2D.float(start x,start y,end x,end y);
只要点两点就可以了。不像Drawline()那样一直跟踪鼠标的!
我以前也找过一次
不过现在真的又想不起来了
而且知道这个class的方法再简单不过了
public void paint(Graphics g) {
System.out.println(g.getClass());
}