在屏幕和位图上使用自定义字体实现倾斜文本都没问题.
但打印时就不行了.该怎么样才能实现呢?
请知道的高手指点下.非常谢谢!!!

解决方案 »

  1.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
            mCanvas: TCanvas;
    begin
            mCanvas := Printer.Canvas;  //uses Printers;
            mCanvas.Font.Style := [fsItalic];
            mCanvas.Font.Size := 48;
            Printer.BeginDoc;
            mCanvas.TextOut(100,100,'测试test');
            Printer.EndDoc;
    end;
    这种方式打印,你可以想怎么画就怎么画了
      

  2.   

    http://www.sudu.cn/info/index.php?op=article&id=258333
    画倾斜文本,画在打印机画布上即可
      

  3.   

    你既然可以在屏幕和位图上画了,把屏幕或位图canvas复制到打印机的画布不就行了嘛
      

  4.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
            mlf: LOGFONT; // Windows native font structure
            mPointer: Pointer;
            mCanvas: TCanvas;
    begin
            mCanvas := Printer.Canvas;
            Printer.BeginDoc;        mCanvas.Brush.Style := bsClear; // set the brush style to transparent
            mPointer := Addr(mlf);
            FillChar(mPointer, SizeOf(mlf), Byte(0));
            mlf.lfHeight := 100;
            mlf.lfWeight := 100;
            mlf.lfEscapement := -10 * 45; // degrees to rotate
            mlf.lfOrientation := 10 * 45;
            mlf.lfCharSet := DEFAULT_CHARSET;
            mlf.lfFaceName := 'Tahoma';        mCanvas.Font.Handle := CreateFontIndirect(mlf);        mCanvas.TextOut(100, 100, 'Rotated text'); // output the rotated font        Printer.EndDoc;
    end;这段代码部分从delphi的help中提取,改了下,可以打出“旋转”字体来,也可以换字体名
      

  5.   

    我用hp laserjet 1020又小又老的打印机了,真打出来了
      

  6.   


    取得打印机的分辨率,根据纸张大小换算成像素宽X高,建立等大的bitmap,在bitmap上绘制你要打印的内容,然后打印这个bitmap,可以做到真正的所见即所得。