我在做一个输出显示的程序,要求是将文字旋转90度显示,和开始菜单里的“WINDOWN”一样的。如果是中文的话,我可以采用@System这样类似的字体,然后用分行控制,但是这种字体不支持英文字母,还请高手指点。

解决方案 »

  1.   

    输出字符串,如何旋转,如何使输出字符串背景透明(摘自Delphi超级猛料)     
      procedure AngleTextOut(CV: TCanvas; const sText: String; x, y, angle:integer); 
    varLogFont: TLogFont;SaveFont: TFont;beginSaveFont := TFont.Create;SaveFont.Assign(CV.Font);GetObject(SaveFont.Handle, sizeof(TLogFont), @LogFont);with LogFont dobeginlfEscapement := angle *10;lfPitchAndFamily := FIXED_PITCH or FF_DONTCARE;end; {with}CV.Font.Handle := CreateFontIndirect(LogFont);SetBkMode(CV.Handle, TRANSPARENT);CV.TextOut(x, y, sText);CV.Font.Assign(SaveFont);SaveFont.Free;end; *********************************procedure TForm1.Button1Click(Sender: TObject);varlf : TLogFont;tf : TFont;beginwith Form1.Canvas do beginFont.Name := 'Arial';Font.Size := 24;tf := TFont.Create;tf.Assign(Font);GetObject(tf.Handle, sizeof(lf), @lf);lf.lfEscapement := 450;lf.lfOrientation := 450;tf.Handle := CreateFontIndirect(lf);Font.Assign(tf);tf.Free;TextOut(20, Height div 2, 'Rotated Text!');end;end;==================================procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);varLogFont : TLogFont;newFont : TFont;beginwith Form1.Canvas dobeginFont.Name := '黑体'; // 字体Font.Size := 32; // 字号Font.Color:= $00ffcc; // 颜色// 创建新字体newFont := TFont.Create;newFont.Assign(Font); // 新字体继承窗体字体的属性// 为新字体设置旋转属性GetObject(newFont.Handle, sizeof(LogFont), @LogFont);LogFont.lfEscapement :=600; //角度*10LogFont.lfOrientation :=600; //应设为同样的值LogFont.lfWidth:=20; //每个字符的大小LogFont.lfHeight:=90;newFont.Handle := CreateFontIndirect(LogFont);Font.Assign(newFont);newFont.Free;// 在鼠标按下的位置显示文字TextOut(X, Y, '旋转文字Demo');end;end;  
     
     
      

  2.   

    用TlogFont
    lfEscapement用于控制字体倾斜度