请问如何实现一个LABEL中显示的字符串中的子字符串颜色用红色显示,其它的用黑色显示?比如:How are you doing?这句话中除了doing用红色显示外,其它的字用黑色显示。谢谢。

解决方案 »

  1.   

    用控件本身是不可能实现的;只能使用一些特殊的方法,如自己取得doing的位置,paint个红色的doing;再不就自己做个控件
      

  2.   

    自己做一个这样的Label就可以了,其实实现也不困难!
      

  3.   

    var Cav:TCanvas;
    use GDI,好在你选择了DELPHI,所以...可以用TCanvas,如果是从TGraphicControl派生可以直接调用,如Label1.Canvas.Brush.Style:=bsClear;
    Label1.Canvas.Font.Color:=clBlack;
    Label1.Canvas.TextOut((Label1.Width-100) Div 2,Panel1.Height Div 2,'How are you');
    Label1.Canvas.Font.Color:=clRed;
    Label1.Canvas.TextOut((Label1.Width+25) Div 2,Panel1.Height Div 2,'doing');如果是TWinControl?继承TCanvas,封装成控件!var
      Cav:TCanvas;
    begin
    Cav:=TCanvas.Create;
    Cav.Handle:=GetDC(Panel1.Handle);
    Cav.Brush.Style:=bsClear;
    Cav.Font.Color:=clBlack;
    Cav.TextOut((Panel1.Width-100) Div 2,Panel1.Height Div 2,'How are you');
    Cav.Font.Color:=clRed;
    Cav.TextOut((Panel1.Width+25) Div 2,Panel1.Height Div 2,'doing');
    end;记得设置大小和除去以前的Caption!还有一很重要问题,重绘,使用TImage不用考虑这个,因为Image.Canvas实际上是Image.Picture.Bitmap.Canvas,实际上就是图像了!其它的就要考虑对WM_PAINT消息的处理,比如有些控件就有OnPaint事件!其实掌握一定技巧和规则,封装成控件不是什么高深的工作,可以自己试试!