新手遇到棘手问题,代码编译成DLL文件时提示System.Drawing.Point.x由于受保护所以禁止访问
请高手帮忙,代码如下:
using System;
using System.Drawing;
public abstract class Shape
{
protected string name;
protected Color color;
protected Point position;
//public Point position;
protected float linewidth; public string Name
{
get
{
return name;
}
set
{
name=value;
}
}
public Color Color
{
get
{
return color;
}
set
{
color=value;
}
}
public Point Position
{
get
{
return position;
}
set
{
position=value;
}
}
public float Linewidth
{
get
{
return linewidth;
}
set
{
linewidth=value;
}
}
public abstract double Area{get;}
public abstract void Draw(Graphics g);
}
public class Ellipse:Shape
{
protected int semimajoraxis;
protected int semiminoraxis;
public virtual int Semimajoraxis
{
get
{
return semimajoraxis;
}
set
{
semimajoraxis=value;
}
}
public virtual int Semiminoraxis
{
get
{
return semiminoraxis;
}
set
{
semiminoraxis=value;
}
}
public override double Area//椭圆面积是pi*a*b;
{
get
{
return (Math.PI*Semimajoraxis*Semiminoraxis);
}
}
public override void Draw(Graphics g)
{
Pen pen=new Pen(Color,linewidth);
g.DrawEllipse(pen,Position.x,Position.y,2*Semimajoraxis,2*Semiminoraxis);
}
}
public class Rectangle:Shape
{
protected int height,width;
public virtual int Height
{
get
{
return height;
}
set
{
height=value;
}
}
public virtual int Width
{
get
{
return width;
}
set
{
width=value;
}
}
public override double Area
{
get
{
return (Height*Width);
}
}
public override void Draw(Graphics g)
{
Pen pen=new Pen(Color,Linewidth);
g.DrawRectangle(pen,Position.x,Position.y);
}
}
public class Triangle:Shape
{
protected Point point1;
protected Point point2;
public Point Point1
{
get
{
return point1;
}
set
{
point1=value;
}
}
public Point Point2
{
get
{
return Point2;
}
set
{
point2=value;
}
}
public double[] side
{
get
{
double[] side=new double[3];
side[0]=Math.Sqrt((Point1.x-Position.x)*(Point1.x-Position.x)+(Point1.y-Position.y)*(Point1.y-Position.y));
side[1]=Math.Sqrt((Point2.x-Point1.x)*(Point2.x-Point1.x)+(Point2.y-Point1.y)*(Point2.y-Point1.y));
side[2]=Math.Sqrt((Position.x-Point2.x)*(Position.x-Point2.x)+(Position.y-Point2.y)*(Position.y-Point2.y));
return side;
}
}
public override double Area
{
get
{
return((Math.Abs( *Point1.y-Point1.x*Position.y)+Math.Abs(Point1.x*Point2.y-Point2.x*Point1.y)+Math.Abs(Position.x*Point2.y-Position.x*Point2.y))/2.0);
} }
public override void Draw(Graphics g)
{
Pen pen=new Pen(Color,Linewidth);
Point[] points={Position,Point1,Point2};
g.DrawPolygon(pen,points);
}
}
public class Circle:Ellipse
{
public override int Semimajoraxis
{
get
{
return semimajoraxis;
}
set
{
semimajoraxis = value;
semiminoraxis = value;
}
}
public override int Semiminoraxis
{
get
{
return Semiminoraxis;
}
set
{
Semiminoraxis=value;
}
}
public int Radius
{
get
{
return Semiminoraxis;
}
set
{
Semiminoraxis=value;
}
}
}
public class Square:Rectangle
{
public override int Height
{
get
{
return height;
}
set
{
height=value;
width=value;
}
}
public override int Width
{
get
{
return Height;
}
set
{
Height=value;
}
}
public int Side
{
get
{
return Height;
}
set
{
Height=value;
}
}}
请高手帮忙,代码如下:
using System;
using System.Drawing;
public abstract class Shape
{
protected string name;
protected Color color;
protected Point position;
//public Point position;
protected float linewidth; public string Name
{
get
{
return name;
}
set
{
name=value;
}
}
public Color Color
{
get
{
return color;
}
set
{
color=value;
}
}
public Point Position
{
get
{
return position;
}
set
{
position=value;
}
}
public float Linewidth
{
get
{
return linewidth;
}
set
{
linewidth=value;
}
}
public abstract double Area{get;}
public abstract void Draw(Graphics g);
}
public class Ellipse:Shape
{
protected int semimajoraxis;
protected int semiminoraxis;
public virtual int Semimajoraxis
{
get
{
return semimajoraxis;
}
set
{
semimajoraxis=value;
}
}
public virtual int Semiminoraxis
{
get
{
return semiminoraxis;
}
set
{
semiminoraxis=value;
}
}
public override double Area//椭圆面积是pi*a*b;
{
get
{
return (Math.PI*Semimajoraxis*Semiminoraxis);
}
}
public override void Draw(Graphics g)
{
Pen pen=new Pen(Color,linewidth);
g.DrawEllipse(pen,Position.x,Position.y,2*Semimajoraxis,2*Semiminoraxis);
}
}
public class Rectangle:Shape
{
protected int height,width;
public virtual int Height
{
get
{
return height;
}
set
{
height=value;
}
}
public virtual int Width
{
get
{
return width;
}
set
{
width=value;
}
}
public override double Area
{
get
{
return (Height*Width);
}
}
public override void Draw(Graphics g)
{
Pen pen=new Pen(Color,Linewidth);
g.DrawRectangle(pen,Position.x,Position.y);
}
}
public class Triangle:Shape
{
protected Point point1;
protected Point point2;
public Point Point1
{
get
{
return point1;
}
set
{
point1=value;
}
}
public Point Point2
{
get
{
return Point2;
}
set
{
point2=value;
}
}
public double[] side
{
get
{
double[] side=new double[3];
side[0]=Math.Sqrt((Point1.x-Position.x)*(Point1.x-Position.x)+(Point1.y-Position.y)*(Point1.y-Position.y));
side[1]=Math.Sqrt((Point2.x-Point1.x)*(Point2.x-Point1.x)+(Point2.y-Point1.y)*(Point2.y-Point1.y));
side[2]=Math.Sqrt((Position.x-Point2.x)*(Position.x-Point2.x)+(Position.y-Point2.y)*(Position.y-Point2.y));
return side;
}
}
public override double Area
{
get
{
return((Math.Abs( *Point1.y-Point1.x*Position.y)+Math.Abs(Point1.x*Point2.y-Point2.x*Point1.y)+Math.Abs(Position.x*Point2.y-Position.x*Point2.y))/2.0);
} }
public override void Draw(Graphics g)
{
Pen pen=new Pen(Color,Linewidth);
Point[] points={Position,Point1,Point2};
g.DrawPolygon(pen,points);
}
}
public class Circle:Ellipse
{
public override int Semimajoraxis
{
get
{
return semimajoraxis;
}
set
{
semimajoraxis = value;
semiminoraxis = value;
}
}
public override int Semiminoraxis
{
get
{
return Semiminoraxis;
}
set
{
Semiminoraxis=value;
}
}
public int Radius
{
get
{
return Semiminoraxis;
}
set
{
Semiminoraxis=value;
}
}
}
public class Square:Rectangle
{
public override int Height
{
get
{
return height;
}
set
{
height=value;
width=value;
}
}
public override int Width
{
get
{
return Height;
}
set
{
Height=value;
}
}
public int Side
{
get
{
return Height;
}
set
{
Height=value;
}
}}
把protected 全部改成public试试
Position.X, Position.Y这才是公有的.
现在我的问题解决了,谢谢你啊。我第一次来还不知道应该怎么给你分呢!