用Canvas.textout( )输出文字时,如何指定文字的宽度?
即:使得字符看上去像是被压扁了一样。

解决方案 »

  1.   

    给你个例子,想怎么设置字体就怎么设置字体,当然这儿我以一个edit里面的字体为例子,你可能改成你自己需要的
    procedure TForm1.Button1Click(Sender: TObject);
    var
    lf:LOGFONT;
    begin
    lf.lfCharSet:=GB2312_CHARSET;
    lf.lfClipPrecision:=CLIP_DEFAULT_PRECIS;
    lf.lfEscapement:=0;
    lf.lfHeight:=32; //字体高度
    lf.lfItalic:=0;
    lf.lfOrientation:=0;
    lf.lfOutPrecision:=OUT_DEFAULT_PRECIS;
    lf.lfPitchAndFamily:=FF_DONTCARE or DEFAULT_PITCH;
    lf.lfQuality:=DEFAULT_QUALITY;
    lf.lfStrikeOut:= 0;
    lf.lfUnderline:=0;
    lf.lfWeight:=1;//字体重量
    lf.lfWidth:=0; //字体宽度
    edit1.Font.Handle:=CreateFontIndirect(lf);
    end;
      

  2.   

    var
      lf: TLogFont;
    begin
        Canvas.Brush.Style := bsClear; // set the brush style to transparent
        ZeroMemory( @lf, sizeof(LOGFONT));
        lf.lfWeight := FW_THIN;
        lf.lfWidth := 10;//通过修改这个值可以达到"长"或者"扁"的调整
        lf.lfHeight := 100;
        lf.lfEscapement := 10 * 45; // degrees to rotate
        lf.lfOrientation := 1 * 45;
        lf.lfCharSet := DEFAULT_CHARSET;
        //strcpy(lf.lfFaceName, 'Tahoma');
        StrPCopy(lf.lfFaceName, 'Tahoma');    Canvas.Font.Handle := CreateFontIndirect( lf);    Canvas.TextOut(10,200,'测试');end;