当Canvas.pen.width>1时,Canvas.pen.style不起作用,那么应如何设置线型呢?如果要自己用画点的方式好像太麻烦了,哪位有没有封装好的代码?

解决方案 »

  1.   

    一个简单的方法就是 自己画几遍。
    比如 pen.Width:= 2;那么你就自己画两遍相邻的Width为1的。
      

  2.   

    var
      lb : LOGBRUSH;    lb.lbStyle := BS_SOLID;
        lb.lbColor := clSilver;
        lb.lbHatch := 0;
        Canvas.Pen.Handle := ExtCreatePen( PS_COSMETIC or PS_ALTERNATE, 1, lb, 0, nil );给分吧
      

  3.   

    Canvas.Pen.Handle := ExtCreatePen( PS_COSMETIC or PS_ALTERNATE, 1, lb, 0, nil );
    其中,1是pen的宽度,自己调整
      

  4.   

    另提醒:
    在WIN9X下以上代码无效---只有自己画了,呵呵
      

  5.   

    呵呵,疏忽,错了一点:
    Canvas.Pen.Handle := ExtCreatePen( PS_COSMETIC or PS_ALTERNATE, 1, lb, 0, nil );
    改为:
    Canvas.Pen.Handle := ExtCreatePen( PS_GEOMETRIC or PS_DOT, 5, lb, 0, nil );
    看看效果,呵呵
      

  6.   

    谢谢flyinwuhan,我试了一下,如果将Pen的宽度设为大于1,还是一样,原来的点线变成了实线,能再指点一下吗? 我的系统是win2000。
      

  7.   

    那不可能的,我已经试过我的代码了。
    Canvas.Pen.Handle := ExtCreatePen( PS_GEOMETRIC or PS_DOT, 5, lb, 0, nil );设定Pen的宽度不能用Pen.Width = xxx;而是在上面改写。上面Pen的宽度是5。
      

  8.   

    其实是可以了,但线型有点怪。我是在自己开发的AC Report中碰到了这一问题,不过我现在是采取自己控制线型的方法,即自己写了一类来实现各种线型,但还是非常谢谢您!如果,有兴趣,请您看看我开发的报表系统,处理线型的代码在AC_Graphic单元中,请从以下地址下载:http://www.efile.com.cn/?syy_tfsky
    http://www.skycn.com/soft/14726.html