error C2653: 'CMiniDrawDOC' : is not a class or namespace name在VC中这个错误怎么解决

error C2653: 'CMiniDrawDOC' : is not a class or namespace name在VC中这个错误怎么解决,第1张

CMiniDrawDOC不是你自己唯野谨主函数的类名吧?应该把你自己的工程名改为MiniDraw,或者把程序中所有的“CMiniDrawDOC”中的MiniDraw改为你自己的工程名。我刚学时也犯这种低级错误,原因是直接拷了别人脊槐的程序,但是自己起的工程指基名与之不同,VC自动生成的类名自然也不对应了

楼主写一个html,很容易把下面代码嵌入到applet,可以google一下实现,

还有copy自闹搜己不知道算不算复制。。。-_-!

--------------------------------------------------------------------

楼主给你一个我的,直接保存成pb.java编译运行,就是你要的画图功能 ,可以参考一下虚困

____________________________________________________________________

import java.applet.*

import java.awt.*

import java.awt.event.*

import java.util.*

import javax.swing.*

import java.awt.geom.*

import java.io.*

class Point implements Serializable

{

int x,y

Color col

int tool

int boarder

Point(int x, int y, Color col, int tool, int boarder)

{

this.x = x

this.y = y

this.col = col

this.tool = tool

this.boarder = boarder

}

}

class paintboard extends Frame implements ActionListener,MouseMotionListener,MouseListener,ItemListener

{

int x = -1, y = -1

int con = 1//画笔差弯念大小

int Econ = 5//橡皮大小

int toolFlag = 0//toolFlag:工具标记

//toolFlag工具对应表:

//(0--画笔);(1--橡皮);(2--清除);

//(3--直线);(4--圆);(5--矩形);

Color c = new Color(0,0,0)//画笔颜色

BasicStroke size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL)//画笔粗细

Point cutflag = new Point(-1, -1, c, 6, con)//截断标志

Vector paintInfo = null//点信息向量组

int n = 1

FileInputStream picIn = null

FileOutputStream picOut = null

ObjectInputStream VIn = null

ObjectOutputStream VOut = null

// *工具面板--画笔,直线,圆,矩形,多边形,橡皮,清除*/

Panel toolPanel

Button eraser, drLine,drCircle,drRect

Button clear ,pen

Choice ColChoice,SizeChoice,EraserChoice

Button colchooser

Label 颜色,大小B,大小E

//保存功能

Button openPic,savePic

FileDialog openPicture,savePicture

paintboard(String s)

{

super(s)

addMouseMotionListener(this)

addMouseListener(this)

paintInfo = new Vector()

/*各工具按钮及选择项*/

//颜色选择

ColChoice = new Choice()

ColChoice.add("black")

ColChoice.add("red")

ColChoice.add("blue")

ColChoice.add("green")

ColChoice.addItemListener(this)

//画笔大小选择

SizeChoice = new Choice()

SizeChoice.add("1")

SizeChoice.add("3")

SizeChoice.add("5")

SizeChoice.add("7")

SizeChoice.add("9")

SizeChoice.addItemListener(this)

//橡皮大小选择

EraserChoice = new Choice()

EraserChoice.add("5")

EraserChoice.add("9")

EraserChoice.add("13")

EraserChoice.add("17")

EraserChoice.addItemListener(this)

////////////////////////////////////////////////////

toolPanel = new Panel()

clear = new Button("清除")

eraser = new Button("橡皮")

pen = new Button("画笔")

drLine = new Button("画直线")

drCircle = new Button("画圆形")

drRect = new Button("画矩形")

openPic = new Button("打开图画")

savePic = new Button("保存图画")

colchooser = new Button("显示调色板")

//各组件事件监听

clear.addActionListener(this)

eraser.addActionListener(this)

pen.addActionListener(this)

drLine.addActionListener(this)

drCircle.addActionListener(this)

drRect.addActionListener(this)

openPic.addActionListener(this)

savePic.addActionListener(this)

colchooser.addActionListener(this)

颜色 = new Label("画笔颜色",Label.CENTER)

大小B = new Label("画笔大小",Label.CENTER)

大小E = new Label("橡皮大小",Label.CENTER)

//面板添加组件

toolPanel.add(openPic)

toolPanel.add(savePic)

toolPanel.add(pen)

toolPanel.add(drLine)

toolPanel.add(drCircle)

toolPanel.add(drRect)

toolPanel.add(颜色)toolPanel.add(ColChoice)

toolPanel.add(大小B)toolPanel.add(SizeChoice)

toolPanel.add(colchooser)

toolPanel.add(eraser)

toolPanel.add(大小E)toolPanel.add(EraserChoice)

toolPanel.add(clear)

//工具面板到APPLET面板

add(toolPanel,BorderLayout.NORTH)

setBounds(60,60,900,600)setVisible(true)

validate()

//dialog for save and load

openPicture = new FileDialog(this,"打开图画",FileDialog.LOAD)

openPicture.setVisible(false)

savePicture = new FileDialog(this,"保存图画",FileDialog.SAVE)

savePicture.setVisible(false)

openPicture.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{ openPicture.setVisible(false)}

})

savePicture.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{ savePicture.setVisible(false)}

})

addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{ System.exit(0)}

})

}

public void paint(Graphics g)

{

Graphics2D g2d = (Graphics2D)g

Point p1,p2

n = paintInfo.size()

if(toolFlag==2)

g.clearRect(0,0,getSize().width,getSize().height)//清除

for(int i=0i<n i++){

p1 = (Point)paintInfo.elementAt(i)

p2 = (Point)paintInfo.elementAt(i+1)

size = new BasicStroke(p1.boarder,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL)

g2d.setColor(p1.col)

g2d.setStroke(size)

if(p1.tool==p2.tool)

{

switch(p1.tool)

{

case 0://画笔

Line2D line1 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y)

g2d.draw(line1)

break

case 1://橡皮

g.clearRect(p1.x, p1.y, p1.boarder, p1.boarder)

break

case 3://画直线

Line2D line2 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y)

g2d.draw(line2)

break

case 4://画圆

Ellipse2D ellipse = new Ellipse2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) , Math.abs(p2.y-p1.y))

g2d.draw(ellipse)

break

case 5://画矩形

Rectangle2D rect = new Rectangle2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) , Math.abs(p2.y-p1.y))

g2d.draw(rect)

break

case 6://截断,跳过

i=i+1

break

default :

}//end switch

}//end if

}//end for

}

public void itemStateChanged(ItemEvent e)

{

if(e.getSource()==ColChoice)//预选颜色

{

String name = ColChoice.getSelectedItem()

if(name=="black")

{c = new Color(0,0,0)}

else if(name=="red")

{c = new Color(255,0,0)}

else if(name=="green")

{c = new Color(0,255,0)}

else if(name=="blue")

{c = new Color(0,0,255)}

}

else if(e.getSource()==SizeChoice)//画笔大小

{

String selected = SizeChoice.getSelectedItem()

if(selected=="1")

{

con = 1

size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL)

}

else if(selected=="3")

{

con = 3

size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL)

}

else if(selected=="5")

{con = 5

size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL)

}

else if(selected=="7")

{con = 7

size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL)

}

else if(selected=="9")

{con = 9

size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL)

}

}

else if(e.getSource()==EraserChoice)//橡皮大小

{

String Esize = EraserChoice.getSelectedItem()

if(Esize=="5")

{ Econ = 5*2}

else if(Esize=="9")

{ Econ = 9*2}

else if(Esize=="13")

{ Econ = 13*2}

else if(Esize=="17")

{ Econ = 17*3}

}

}

public void mouseDragged(MouseEvent e)

{

Point p1

switch(toolFlag){

case 0://画笔

x = (int)e.getX()

y = (int)e.getY()

p1 = new Point(x, y, c, toolFlag, con)

paintInfo.addElement(p1)

repaint()

break

case 1://橡皮

x = (int)e.getX()

y = (int)e.getY()

p1 = new Point(x, y, null, toolFlag, Econ)

paintInfo.addElement(p1)

repaint()

break

default :

}

}

public void mouseMoved(MouseEvent e) {}

public void update(Graphics g)

{

paint(g)

}

public void mousePressed(MouseEvent e)

{

Point p2

switch(toolFlag){

case 3://直线

x = (int)e.getX()

y = (int)e.getY()

p2 = new Point(x, y, c, toolFlag, con)

paintInfo.addElement(p2)

break

case 4: //圆

x = (int)e.getX()

y = (int)e.getY()

p2 = new Point(x, y, c, toolFlag, con)

paintInfo.addElement(p2)

break

case 5: //矩形

x = (int)e.getX()

y = (int)e.getY()

p2 = new Point(x, y, c, toolFlag, con)

paintInfo.addElement(p2)

break

default :

}

}

public void mouseReleased(MouseEvent e)

{

Point p3

switch(toolFlag){

case 0://画笔

paintInfo.addElement(cutflag)

break

case 1: //eraser

paintInfo.addElement(cutflag)

break

case 3://直线

x = (int)e.getX()

y = (int)e.getY()

p3 = new Point(x, y, c, toolFlag, con)

paintInfo.addElement(p3)

paintInfo.addElement(cutflag)

repaint()

break

case 4: //圆

x = (int)e.getX()

y = (int)e.getY()

p3 = new Point(x, y, c, toolFlag, con)

paintInfo.addElement(p3)

paintInfo.addElement(cutflag)

repaint()

break

case 5: //矩形

x = (int)e.getX()

y = (int)e.getY()

p3 = new Point(x, y, c, toolFlag, con)

paintInfo.addElement(p3)

paintInfo.addElement(cutflag)

repaint()

break

default:

}

}

public void mouseEntered(MouseEvent e){}

public void mouseExited(MouseEvent e){}

public void mouseClicked(MouseEvent e){}

public void actionPerformed(ActionEvent e)

{

if(e.getSource()==pen)//画笔

{toolFlag = 0}

if(e.getSource()==eraser)//橡皮

{toolFlag = 1}

if(e.getSource()==clear)//清除

{

toolFlag = 2

paintInfo.removeAllElements()

repaint()

}

if(e.getSource()==drLine)//画线

{toolFlag = 3}

if(e.getSource()==drCircle)//画圆

{toolFlag = 4}

if(e.getSource()==drRect)//画矩形

{toolFlag = 5}

if(e.getSource()==colchooser)//调色板

{

Color newColor = JColorChooser.showDialog(this,"调色板",c)

c = newColor

}

if(e.getSource()==openPic)//打开图画

{

openPicture.setVisible(true)

if(openPicture.getFile()!=null)

{

int tempflag

tempflag = toolFlag

toolFlag = 2

repaint()

try{

paintInfo.removeAllElements()

File filein = new File(openPicture.getDirectory(),openPicture.getFile())

picIn = new FileInputStream(filein)

VIn = new ObjectInputStream(picIn)

paintInfo = (Vector)VIn.readObject()

VIn.close()

repaint()

toolFlag = tempflag

}

catch(ClassNotFoundException IOe2)

{

repaint()

toolFlag = tempflag

System.out.println("can not read object")

}

catch(IOException IOe)

{

repaint()

toolFlag = tempflag

System.out.println("can not read file")

}

}

}

if(e.getSource()==savePic)//保存图画

{

savePicture.setVisible(true)

try{

File fileout = new File(savePicture.getDirectory(),savePicture.getFile())

picOut = new FileOutputStream(fileout)

VOut = new ObjectOutputStream(picOut)

VOut.writeObject(paintInfo)

VOut.close()

}

catch(IOException IOe)

{

System.out.println("can not write object")

}

}

}

}//end paintboard

public class pb

{

public static void main(String args[])

{ new paintboard("画图程序")}

}

public class MiniDraw implements ActionListener, MouseListener{// Fieldsprivate JFrame frame = new JFrame("MiniDraw")

private DrawingCanvas canvas = new DrawingCanvas() private JButton colorButton// the button for colour, so we can change its background to the current color.

private JTextField textField // the field for entering text to put on the canvas// fields for recording the information needed to perform the next action

private enum Action {Line,Rect, Oval, Triangle, Text, Dot, Move, Delete, Push, Pull} private int pressedX //喊衡where the mouse was pressed

private int pressedY //where the mouse was pressed

private Action currentAction = Action.Line

private Color currentColor = Color.black private List<Shape>shapes = new ArrayList <Shape>()

/** Constructor sets up the GUI. */

public MiniDraw(){

frame.setSize(800,600)//The graphics area

canvas.addMouseListener(this)

frame.getContentPane().add(canvas, BorderLayout.CENTER)//The buttons

JPanel topPanel = new JPanel( )

frame.getContentPane().add(topPanel, BorderLayout.NORTH)

JPanel botPanel = new JPanel( )

frame.getContentPane().add(botPanel, BorderLayout.SOUTH)

addButton(topPanel, "New")

addButton(topPanel, "Open")

addButton(topPanel, "Save"穗渗雹)

addButton(topPanel, "Delete")

addButton(topPanel, "Move")

colorButton = addButton(topPanel, "Color") // remember the button so we can change its colour

addButton(topPanel, "猜帆Push")

addButton(topPanel, "Pull")

addButton(topPanel, "Reverse")

addButton(topPanel, "Quit")botPanel.add(new JLabel("Shapes: "))

addButton(botPanel, "Line")

addButton(botPanel, "Rect")

addButton(botPanel, "Oval")

addButton(botPanel, "Triangle")

addButton(botPanel, "Dot")

addButton(botPanel, "Text")

textField = new JTextField("Enter text", 12)

botPanel.add(new JLabel(" : "))

botPanel.add(textField)frame.setVisible(true)

}/** Utility method to make new button and add it to the panel

Returns the button, in case we need it. */

private JButton addButton(JPanel panel, String name){

JButton button = new JButton(name)

button.addActionListener(this)

panel.add(button)

return button

}/** Respond to button presses */public void actionPerformed(ActionEvent e){

String button = e.getActionCommand()

//System.out.printf("Button: %s\n", button) //for debugging

if (button.equals("New") )

newDrawing()

else if (button.equals("Open") )

openDrawing()

else if (button.equals("Save") )

saveDrawing()

else if (button.equals("Color") )

selectColor()

else if (button.equals("Reverse") )

reverseDrawing()

else if (button.equals("Quit") )

frame.dispose()

else{ //

currentAction = Action.valueOf(button) // converts the String to an Action.

}

}/** Sets the current color.

* Also changes the color of the Color button and sets the background color of the canvas */

private void selectColor(){

Color newColor = JColorChooser.showDialog(frame,"Choose Color for new shapes", currentColor)

if (newColor!=null){

currentColor=newColor

colorButton.setBackground(currentColor)

}

}// Respond to mouse events

/** When mouse is pressed, remember the position in order to construct the Shape when

* the mouse is released. */

public void mousePressed(MouseEvent e) {

int x = e.getX()int y = e.getY()

//System.out.printf("Pressed at (%d, %d)\n", x, y) //for debugging

pressedX = x

pressedY = y

}/** When the Mouse is released, depending on the currentAction,

* either construct the shape that was being drawn, or perform the

* action (delete or move) on the shape under the point where the mouse was pressed.*/

public void mouseReleased(MouseEvent e) {

int x = e.getX()int y = e.getY()

//System.out.printf("Released at (%d, %d)\n", x, y) //for debugging

if (currentAction==Action.Move)

moveShape(pressedX, pressedY, x, y)

else if (currentAction==Action.Delete)

deleteShape(x, y)

else if (currentAction==Action.Push)

pushShapeBackward(x, y)

else if (currentAction==Action.Pull)

pullShapeForward(x, y)

else

addShape(pressedX, pressedY, x, y)

}public void mouseClicked(MouseEvent e) {} //needed to satisfy interface

public void mouseEntered(MouseEvent e) {} //needed to satisfy interface

public void mouseExited(MouseEvent e) {} //needed to satisfy interface

// Helper methods for implementing the button and mouse actions

/** Start a new drawing. */

public void newDrawing(){

shapes = new ArrayList<Shape>()

canvas.clear()

}

/** Open a file, and read all the shape descriptions into the current drawing. */

public void openDrawing(){

String fname = FileChooser.open()

if (fname==null) return

try {

Scanner file = new Scanner(new File(fname))

//System.out.printf("Opening file %s\n", fname)

shapes = new ArrayList<Shape>()

while (file.hasNext()){

String shapetype = file.next().toLowerCase()

if (shapetype.equals("oval"))

shapes.add(new Oval(file))

else if (shapetype.equals("rectangle"))

shapes.add(new Rectangle(file))

if (shapetype.equals("line"))

shapes.add(new Line(file))

if (shapetype.equals("textshape"))

shapes.add(new TextShape(file))

else if (shapetype.equals("triangle"))

shapes.add(new Triangle(file))

else if (shapetype.equals("dot"))

shapes.add(new Dot(file))

}

render()

}

catch(IOException e) {

System.out.println(e.getMessage())

e.printStackTrace()

}

}/** Save the current drawing to a file. */

public void saveDrawing(){

String fname =FileChooser.save()

if ( fname == null )

return

try{

PrintStream f = new PrintStream( new File( fname ))

for ( Shape shape : shapes )

f.println( shape.toString())

f.close ()

}

catch(IOException ex){

System.out.println(ex.getMessage())

ex.printStackTrace()

}

}

/** Returns the shape under the position (x y), or null if no such shape */

public Shape findShape(int x, int y){

for (int i = shapes.size()-1i>=0i--){ // must go backwards, so can't use foreach

Shape shape = shapes.get(i)

if (shape.pointOnShape(x, y))

return shape

}

return null // no shape found at position

}

/** Moves the shape that was under the mousePressed position (pressedX, pressedY)

to where the mouse was released.

Ie, move it by (newX-pressedX) and (newY-pressedY)

*/

public void moveShape(int fromX, int fromY, int toX, int toY){

//System.out.printf("Moving shape under (%d, %d) to (%d, %d)\n", pressedX, pressedY, newX, newY) //for debugging

Shape shape = findShape(fromX, fromY)

if (shape!= null)

shape.moveBy((toX-fromX), (toY-fromY))

render()

}/** Deletes the shape that was under the mouseReleased position (x, y)

*/

public void deleteShape(int x, int y){ for ( Shape shape : shapes) {

if ( shape.pointOnShape(x, y ))

shapes.remove ( shape )

}

render()

}

/** Pull the shape under the mouse one position closer to the "front"

of the drawing */

public void pullShapeForward(int x, int y){

// System.out.printf("Pulling shape under (%d, %d) forward\n", x, y) //for debugging

// YOUR CODE HERE

Shape shape = findShape( x, y )

if (shape!=null ) {

int index = shapes.indexOf(shape)

if ( index<shapes.size()-1){

shapes.remove(index)

shapes.add( index+1,shape)

}

render()

}

}

/** Push the shape under the mouse one position further from the "front"

of the drawing */

public void pushShapeBackward(int x, int y){

//System.out.printf("Pushing shape under (%d, %d) backward\n", x, y) //for debugging

// YOUR CODE HERE

Shape shape = findShape(x, y )

if ( shape!=null ){

int index = shapes.indexOf(shape)

if( index >0 )

shapes.remove( index)

shapes.add( index-1, shape)

}

render()

}

/** Reverse the order of the shapes in the drawing */

public void reverseDrawing(){ List<Shape>temp = new ArrayList<Shape>()

while ( shapes.size() >0 ) {

temp.add ( shapes.remove(shapes.size()-1))

}

shapes= temp

render()

}

/** Construct a new Shape object of the appropriate kind (depending on currentAction)

Uses the appropriate constructor of the Line, Rectangle, Oval, TextShape, or Triangle classes.

adds the shape it to the collection of shapes in the drawing, and

renders the shape on the canvas */

public void addShape(int x1, int y1, int x2, int y2){

//System.out.printf("Drawing shape %s, at (%d, %d)-(%d, %d)\n", currentAction, pressedX, pressedY, x, y) //for debugging

Shape shape = null

if (currentAction==Action.Line)

shapes.add(new Line(x1, y1, x2, y2, currentColor))

if (currentAction==Action.Triangle)

shapes.add(new Triangle(x1, y1, x2, y2, currentColor))

if (currentAction==Action.Dot)

shapes.add(new Dot(x2, y2, currentColor))

else if (currentAction==Action.Text)

shapes.add(new TextShape(x2, y2, textField.getText(), currentColor))

else{

int left= Math.min(x1, x2)

int top= Math.min(y1, y2)

int width= Math.abs(x1 - x2)

int height= Math.abs(y1 - y2)

if (currentAction==Action.Rect)

shapes.add(new Rectangle(left, top, width, height, currentColor))

else if (currentAction==Action.Oval)

shapes.add(new Oval(left, top, width, height, currentColor))

}

render()

}public void render(){

canvas.clear(false)

for (Shape shape : shapes){

shape.render(canvas)

}

canvas.display()

}public static void main(String args[]){

new MiniDraw()

}}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12259416.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存