【问题标题】:Printing in Firemonkey在 Firemonkey 中打印
【发布时间】:2020-06-22 21:17:02
【问题描述】:
TPrinter* prn = Printer::Printer();

TCanvas* Canvas = prn->Canvas;
String text = "Long live the king";

TFillTextFlags fTextFlag = TFillTextFlags();
prn->BeginDoc();
    TRectF rect{100, 100, 800, 800};
    Canvas->FillText(rect, text, false, 1, fTextFlag, TTextAlign::Leading, TTextAlign::Leading);
prn->EndDoc();

ShowMessage("Done Printing!");

出来的文本非常小(好像没有对 DPI 进行缩放......就像打印到屏幕,而不是打印机)......我在 VCL 中尝试了上述(类似)代码,结果很好……

【问题讨论】:

    标签: firemonkey c++builder c++builder-10.3-rio


    【解决方案1】:

    DocWiki 帮助提醒您需要在应用程序中设置打印分辨率 (DPI)。在帮助中它说:

    每台打印机都有自己的以 DPI(每英寸点数)为单位的打印分辨率列表。 DPICount 属性为您提供打印机支持的分辨率数量。 DPI 属性是一个索引属性,可以遍历它以找出实际分辨率。 ActiveDPIIndex 是 DPI 索引属性的从零开始的索引,表示打印设备上的打印分辨率。

    http://docwiki.embarcadero.com/RADStudio/Rio/en/Printing_from_a_FireMonkey_Application#About_DPI_and_Driver_Support

    在打印机上打印图像位图的帮助中有一个 C++Builder 示例。它向您展示了如何设置 DPI,然后设置要打印的矩形。

    http://docwiki.embarcadero.com/CodeExamples/Rio/en/FMXPrinting_(C%2B%2B)

    我尝试使用 10.4 Sydney 打印出披头士 Sgt Peppers Hearts Club Band 专辑封面的位图。当我将矩形大小设置为完整的打印机页面宽度和高度时,专辑封面适合整个页面。当我将矩形大小设置为 800 x 800 时,专辑封面打印在页面左上角约一英寸处。

    Printer->ActivePrinter->SelectDPI(1200, 1200);
    
    // DestRect = TRectF(0, 0, Printer->PageWidth, Printer->PageHeight);
    DestRect = TRectF(0, 0, 800, 800);
    

    检查一下:D

    【讨论】:

    • 它不起作用.... :( .... 可能是我的电脑...我会尝试在另一台电脑上测试...无论如何谢谢...
    • 还要检查您的打印机的设置/选项,看看可以进行哪些 DPI 设置:D
    猜你喜欢
    • 2011-11-16
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 2014-03-24
    相关资源
    最近更新 更多