上面三幅图的文字自绘我分别后移了,50,35,25个像素,但是类型列的像素是够宽的,为什么自绘的时候,看不见文字呢,当后移像素增加的时候
 InflateRect(rect,-50,0);
 DrawText(ListView1.Canvas.Handle,PChar(Item.Caption),-1,rect,DT_VCENTER or DT_SINGLELINE or DT_END_ELLIPSIS or 0);

解决方案 »

  1.   

    估计绘制的范围超出了你的canvas范围
      

  2.   

    是不是原来的Rect就没有这么宽
      

  3.   

    DT_END_ELLIPSIS 这个参数不要加就好了
      

  4.   

    楼上的真够细心。首先,你没描述“rect”是从何而来、大小是怎样的; 
    语句“InflateRect(rect,-50,0);”不光是“后移50个像素”,它是将矩形左右各减了50个像素。另外,在语句“DrawText(ListView1.Canvas.Handle,PChar(Item.Caption),-1,rect,DT_VCENTER or DT_SINGLELINE or DT_END_ELLIPSIS or 0);”中的“or 0”,我认为有点多余,如果是 “or DT_TOP”、“or DT_LEFT”,虽说实质也是 or 0,但毕竟还有个意思,而 or 0 既无改变表达式的值,也没表达以什么对齐,不如就省略了它,让语句缩短点。