我知道GDI的限制。GDI 只能绘制宽度至少为 1 像素的线。但我仍然想在打印机中画一条看起来比 1 像素细的线。
你的意思是我可以这样做:
with cLogBrush do
begin
lbStyle := BS_Solid;
lbColor := ACanvas.Pen.Color;
lbHatch := 0;
end;
dwStyle := PS_COSMETIC or PS_ALTERNATE;
ACanvas.Pen.Handle := ExtCreatePen(dwStyle, 1, cLogBrush, 0, nil);
ACanvas.MoveTo(X1, Y1);
ACanvas.LineTo(X2, Y2);
例如,您可以绘制一条交替的黑白像素线。至少对于 600 到 1200 DPI 的典型激光打印机,这通常会很好地融入看起来不那么暗的线条中。然而,我应该补充一点,一条好的激光打印机只有一像素宽的线确实很细。
不过,这里很多确实取决于打印机。例如,对于大多数喷墨打印机,您可以绘制的最细线更粗,即使它们引用相同(甚至更高)的分辨率。线条通常也不那么干净 - 在这两种情况下,它们在中心最暗,并淡入纸张颜色,但使用"褪色"的喷墨通常要慢得多,所以线条的边缘不那么干净。