各位用DELPHI画各种图形,
直线,曲线,多边形等!
请指点明路!

解决方案 »

  1.   

    其实你随便找一本Delphi的书,上面都有介绍。
      

  2.   

    其实你随便找一本Delphi的书,上面都有介绍。
      

  3.   

    好像在canvas上画图,窗口重绘时就会消失。建议直接用油性水笔在屏幕上画。
      

  4.   

    各种图形都有
      canvas.LineTo();
      canvas.MoveTo();
      canvas.Pie();
      canvas.Pixels[x,y]等。重新刷新的话会消失的。你可以在timage上面画就不会消失了。koy0755(koy)说的很有创意啊。
      

  5.   

    一般的程序用Timage.Canvas
    如果用了DelphiX
    就用TDXDraw.Surface.Canvas
      

  6.   

    各种图形元素写成CLASS,自己定义数据结构.这样才能做成矢量的.在PAINTBOX的ONPAINT里调用各个CLASS的PAINT方法.图形就不会不刷新而消失了.注意刷新的优化,图形而且是适量图太多的话.操作就慢了.建议用双缓冲.在内存里CREATE一个BMP.在这个内存BMP里做绘制操作.完成后一次性贴出来.PAINTBOX.DRAW(0,0,BMP);不会闪了.不要用IMAGE  ,用PAINTBOX不会自己刷新.自己管理刷新才不会闪.
      

  7.   

    我觉得上面的说的都非常好。我补充一点,如果要开发一个简单的矢量绘图程序,那就要进行良好的设计模式构架。首先,将程序的对象分为绘制容器和绘制项目两类,绘制项目就是圆形、方形等这些个图形;容器就是画布本身。为了使开发的对象体系有很好的延伸性,应该首先定义两个根类,其一是容器对象的根类(TShapeContainer),提供最基本的容器服务函数,然后是图形物体(TShapeObject)的根类,这个根类具备所有形状物件的共性的成员,以及定义好它和容器之间的信息沟通方式,包括鼠标选中、绘制/重绘函数,位置、大小属性等等,TShapeObject还应该具备纯虚的绘制方法(DrawShape)成员函数以及得有一个TBitmap的成员对象,充当后台的绘制Buffer。而TShapeContainer则至少应该有一个TShapeObject的动态链表。TShapeContainer可以直接由TFrame派生,这样,会带来很多的方便。在编写代码的同时,可以在Frame上放置一个ScrollBox控件,然后在ScrollBox里面放一个PaintBox,这样,可以方便的进行很多要素的绘制。
    自然,两个根类的成员很多都将是虚函数(Virtual),甚至于是纯虚函数(Abstract)。然后可以对TShapeContainer进行派生,派生出一个具体的画图板类;对TShapeObject进行派生,每一种形状都是一种后代类,覆盖实现DrawShape函数。
    这种设计模式可以称之为“画图板模式”。
    这样编写出来后,才是一个充分可扩展,灵活方便,内在构架良好的画图板模块。