如果要在画图的时候输出文本,比如说我画一条直线,而且直线有矢量图的一些特性,能够拖动,要在在直线的附近输出一串字符,采用什么办法好一些,是利用textOut呢,还是用另外的组件呢?

解决方案 »

  1.   

    不需要控件,使用paintbox就可以了,只涉及一些简单的基础知识。
      

  2.   

    使用paintbox还是利用textout咯?
      

  3.   

    你可以自己编写一个组件啊,我觉得用组件来解决还是比较方便的。如果用PAINTBOX,在控制方面(特别是程序愈来愈复杂的时候)就不是太好。现在有些第三方控件已经有你说需要的功能。我也曾写了一个,和你说的功能差不多。还行~~~继承的是TGraphicControl
      

  4.   

    我以前做类似的程序的时候使用panel来模拟直线,但是当直线上千条的时候,机器的内存根本无法承受。所以才建议使用paintbox
      

  5.   

    怎么回没有,将画的东西保存成对象,在onpaint事件中重新画一下就好了
      

  6.   

    fengjn(小枫) :能不能说的详细点啊?谢谢!
      

  7.   

    使用叔祖什么的记录每一条直线的起点和重点。然后在onpaint事件中便利叔祖,将直线都画出来。
      

  8.   

    当你画的线或图形越来越多的画,那么你的PAINTBOX刷新就很慢
    还是强烈建议用第三方控件
      

  9.   

    楼上的观点存在一些错误。即使是控件也是画出来(只不过是WINDOWS给你画),如果画布很大的话,可以Paintbox.parent.DoubleBuffered:= true;然后在只更新屏幕可见的部分,怎么还会慢呢?
      

  10.   

    to fengjin:
    你能贴出只更新屏幕可见部分的源代码吗?
    如果你用第三方控件,就不需要重复的刷新。
    虽然设DOUBLEBUFFERED可以减少刷新所带来的问题,但需要很大的内存(你的PAINTBOX的图形越多的话)
      

  11.   

    invalidaterect();更新画布的部分区域
      

  12.   

    那如果一个组合得图形,比如说两个相交的园,相交于两个点,拖动得时候,由于pen。mode:=pmNotXor,那么肯定会留下两个点在原地,这个问题不能用重画解决吧?