CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

两个unit如何运行得到结果?(在线等,多谢!)

楼主Wliqian(无涯)2003-01-05 20:56:16 在 C++ Builder / 基础类 提问

要在窗体上画一图形:以特定点为中心,画弧、圆、椭圆和矩形。  
  我照例题编写如果下代码,开始时RUN为恢色不能运行,现在能  
  运行无错,但也得不到正确结果,我该如何解决。  
  现附代码如下望多指点,先谢过各位。  
  Unit2.h代码:  
  //---------------------------------------------------------------------  
  #ifndef   Unit2H  
  #define   Unit2H  
  //---------------------------------------------------------------------class   point  
  {  
  protected:  
      int   x,y;  
  public:  
      point(int   x=320,int   y=240);  
  };  
  //---------------------------------------------------------------------  
  class   circles:virtual   public   point  
  {  
      int   radius;  
  public:  
      circles(int   x,int   y,int   radius);  
      void   show(TCanvas*   canvas);  
  };  
  //---------------------------------------------------------------------  
  class   arcs:virtual   public   point  
  {  
      int   radius;  
  public:  
      arcs(int   x,int   y,   int   radius);  
      void   show(TCanvas*   canvas);  
  };  
  //---------------------------------------------------------------------class   ellipses:virtual   public   point  
  {  
      int   xradius,yradius;  
  public:  
      ellipses(int   x,int   y,int   xradius,int   yradius);  
      void   show   (TCanvas*   canvas);  
  };  
  //---------------------------------------------------------------------  
  class   rectangles:virtual   public   point  
  {  
      int   length;  
  public:  
      rectangles(int   x,int   y,int   length);  
      void   show(TCanvas*   cnavas);  
  };  
  //---------------------------------------------------------------------  
  class   mix:arcs,ellipses,rectangles,circles  
  {  
  public:  
      mix(int   x,int   y,int   radius1,int   radius2);  
      void   show(TCanvas*   canvas);  
  };  
  //---------------------------------------------------------------------  
  #endif  
   
   
  Unit2.cpp代码:  
  //---------------------------------------------------------------------#include   <string.h>  
  #include   <conio.h>  
  #include   <vc1.h>  
  #pragma   hdrstop  
  #include   "Unit2.h"  
  //---------------------------------------------------------------------  
  #pragma   package(smart_init)  
  //---------------------------------------------------------------------point::point(int   x,int   y)  
  {  
      point::x=x;  
      point::y=y;  
  }  
  //---------------------------------------------------------------------circles::circles(int   x,int   y,int   radius):poit(x,y)  
  {  
      circles::radius=radius;  
  }  
  //---------------------------------------------------------------------  
  void   circles::show(TCanvas*   canvas)  
  {  
      canvas->Ellipse(x-radius,y-radius,x+radius,y+radius);  
  }  
  //---------------------------------------------------------------------arcs::arcs(int   x,int   y,int   radius):point(x,y)  
  {  
      arcs::radius=radius;  
  }  
  //---------------------------------------------------------------------void   arcs::show(TCanvas*   canvas)  
  {  
      canvas->Arc(x-radius,y-radius,x+radius,y+radius,  
                              x+radius,y-radius,x-radius,y-radius);  
  }  
  //---------------------------------------------------------------------ellipses::ellipses(int   x,int   y,int   xradius,int   yradius):point(x,y)  
  {  
      ellipses::xradius=xradius;  
      ellipses::yradius=yradius;  
  }  
  //---------------------------------------------------------------------  
  void   ellipses::show(TCanvas*   canvas)  
  {  
      canvas->Ellipse(x-xradius,y-yradius,x+xradius,y+yradius);  
  }  
  //---------------------------------------------------------------------  
  rectangles::rectangles(int   x,int   y,int   length):point(x,y)  
  {  
      rectangles::length=length;  
  }  
  //---------------------------------------------------------------------  
  void   rectangles::show(TCanvas*   canvas)  
  {  
      canvas->Rectangle(x-length/2,y-length/2,x+length/2,y+length/2);  
  }  
  //---------------------------------------------------------------------  
  mix::mix(int   x,int   y,int   radius1,int   radius2)  
      :arcs(x,y,radius2),ellipses(x,y,radius1,radius2+5),  
      rectangles(x,y,radius1*2+10),circles(x,y,radius1*2)  
  {  
  }  
  //---------------------------------------------------------------------  
  void   mix::show(TCanvas*   canvas)  
  {  
      ards::show(cnavas);  
      ellipses::show(canvas);  
      rectangles::show>canvas);  
      circles::show(canvas);  
  }  
  //---------------------------------------------------------------------  
   
   
  Form1r   OnPaint事件响应函数:  
  #include   "Unit2.h"  
  //---------------------------------------------------------------------  
  void   __fastcall   TForm1::FormPaint(TObject   *Sender)  
  {  
      Canvas->Brush->Style=bsClear;  
      Canvas->Pen->Width=10;                                    
      mix   object(220,240,100,70);  
      object.show   (Canvas);  
  }  
  //---------------------------------------------------------------------  
  问题点数:50、回复次数:12Top

1 楼Wliqian(无涯)回复于 2003-01-05 21:25:20 得分 0

哇等了半个多小时都没人来救我!  
  up一下也好呀。Top

2 楼jishiping(JSP 季世平)回复于 2003-01-05 21:56:02 得分 0

上面有一些明显的错误,我改了一下,看到一个大圆,里面有一个方框,方框里面有一个椭圆,椭圆内部的上面是一个圆弧。你说得不到正确结果,不知道你希望的是什么结果。Top

3 楼ThinkX(秋天的树)回复于 2003-01-05 22:33:56 得分 10

我从另一个方面说一下:  
  你的各个图形类从point下继承是不符合现实的,  
  应该各个图形包含几个point才对。继承是一种“是一个”的关系,而复合是一种“有一个”的关系。如果rectangles从point继承,那就是说rectangle是一个point,显然这根本是错误的。  
  面向对象是一种技术(语言层次上的),更是一种理念。虽然用了面向对象的语言,如C++和java,但是并没有按照这种理念思考显然是不行的。  
  楼主虽然想用这种理念去抽象point等,只不过可能是错了,但是至少已经入门了。Top

4 楼Wliqian(无涯)回复于 2003-01-06 19:13:14 得分 0

to   ThinkX(思考中)  
          谢谢你的指点。你的话对我有很大帮助,  
  有你的指点,我会进步更快的。  
          :)  
   
  Top

5 楼Wliqian(无涯)回复于 2003-01-06 19:17:48 得分 0

to   jishiping(JSP季世平)  
          能得到你的帮助,我非常高兴,十分感谢!  
  我在提问时就说了希望得到的结果了,跟你得到  
  的一样。我再去改一下有错的地方。  
          谢谢!  
          :)Top

6 楼Wliqian(无涯)回复于 2003-01-06 21:25:50 得分 0

to   jishiping(JSP季世平):  
          我又检查调试了两个多小时,无耐仍然无法  
  得到:以特定点为中心的圆、矩形、椭圆和弧。  
  希望能把你发现的那些明显错误告诉我。  
          非常感谢!  
          :)Top

7 楼jishiping(JSP 季世平)回复于 2003-01-06 22:48:40 得分 40

将Unit2.h中的virtual   public改成public就好了。之前我也没有看,没想到你会这么写,我还是第一次看到这样写的。  
   
  #ifndef   Unit2H  
  #define   Unit2H  
  //---------------------------------------------------------------------  
  class   point  
  {  
  protected:  
      int   x,y;  
  public:  
      point(int   x=320,int   y=240);  
  };  
  //---------------------------------------------------------------------  
  class   circles:   public   point  
  {  
      int   radius;  
  public:  
      circles(int   x,int   y,int   radius);  
      void   show(TCanvas*   canvas);  
  };  
  //---------------------------------------------------------------------  
  class   arcs:   public   point  
  {  
      int   radius;  
  public:  
      arcs(int   x,int   y,   int   radius);  
      void   show(TCanvas*   canvas);  
  };  
  //---------------------------------------------------------------------  
  class   ellipses:   public   point  
  {  
      int   xradius,yradius;  
  public:  
      ellipses(int   x,int   y,int   xradius,int   yradius);  
      void   show   (TCanvas*   canvas);  
  };  
  //---------------------------------------------------------------------  
  class   rectangles:   public   point  
  {  
      int   length;  
  public:  
      rectangles(int   x,int   y,int   length);  
      void   show(TCanvas*   cnavas);  
  };  
  //---------------------------------------------------------------------  
  class   mix:arcs,ellipses,rectangles,circles  
  {  
  public:  
      mix(int   x,int   y,int   radius1,int   radius2);  
      void   show(TCanvas*   canvas);  
  };  
  //---------------------------------------------------------------------  
  #endifTop

8 楼wgh166(涌金水牛)回复于 2003-01-06 23:06:11 得分 0

jishiping(JSP   季世平)   的服务态度太好!真周到,随便问一句你会JSP吗?Top

9 楼RomanticProgrammer() 兰企鹅||南极俺最帅 ()回复于 2003-01-06 23:11:05 得分 0

佩服JSP大哥的耐心,诲人不倦的精神.Top

10 楼Wliqian(无涯)回复于 2003-01-06 23:31:23 得分 0

to   wgh166(面朝PC屏幕·背靠西子湖)    
  和RomanticProgrammer(兰企鹅||南极俺最帅):  
  不要这样啦!你们现在都比我厉害,在此之前JSP大哥  
  一定也帮过你们嘛。我现在也指望你们多多相助,共  
  同进步。  
          谢谢关心。  
          :)Top

11 楼GaoLun(高论)回复于 2003-01-07 19:31:36 得分 0

来晚了     只能来看看了    
   
  就算是来早了     也只敢看看了   呵呵Top

12 楼sdsugar(长青)回复于 2003-01-07 19:34:52 得分 0

是啊,是啊。JSP大哥好有耐心。真佩服你哦,   希望以后能得到JSP大哥的指教Top

相关问题

  • 用VMWare运行 Linux的兄弟近来看看,帮忙~~~~~多谢!
  • 求一个可以运行代码 的论坛,多谢了
  • 猜猜看运行结果
  • 如何找出系统中正在运行的程序文件名? 多谢
  • 运行时,出现"找不到所需的.DLL文件.... VCLBDE50.BPL"(多谢指教!!)
  • 用vb关闭外部正在运行的程序(进程),多谢,很急!~
  • 求救,VC6 下运行正常 .Net下运行结果错误!
  • 怎样保存程序运行结果?
  • 怎样看到VC的运行结果
  • netstat命令的运行结果

关键词

  • 图形
  • 代码
  • virtual
  • jsp
  • radius
  • tcanvas
  • arcs
  • circles
  • point
  • canvas

得分解答快速导航

  • 帖主:Wliqian
  • ThinkX
  • jishiping

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo