GDI System.Drawing.Printing将白色转换为黑色

时间:2011-03-25 14:48:50

标签: c# winforms printing colors gdi+

我在.Net Windows窗体应用程序中创建了一个基本的cad查看器。渲染是通过GDI完成的。

我正在尝试实现物理打印功能,但图纸主要包括白色文字和图片。线条(通常在黑色背景下观看)显然不会打印。

是否有一种简单的方法可以强制白色元素打印成黑色而不检查每个元素的颜色?

简单地反转颜色并不好,因为有色实体需要保持完整。

2 个答案:

答案 0 :(得分:1)

我假设您有一些代码可以在绘制屏幕或打印之前准备图像。你可以传递一个参数代码,告诉它你想要哪些颜色更改?因此,不是专门使用Pens.WhiteBrushes.White,而是在方法开头设置一些代码,根据参数设置正确的画笔。

您唯一的选择是从Graphics对象获取位图并将所有白色像素转换为黑色。这是可行的,但可能不是你想要的。

答案 1 :(得分:0)

我的修复涉及创建几个简单的实用程序类:

    public static Pen GetPrintablePen(Pen pen)
    {
        if (pen.Color.R == 255 && pen.Color.G == 255 && pen.Color.B == 255)
        {
            Pen newPen = (Pen)pen.Clone();
            newPen.Color = Color.Black;
            return newPen;
        }
        return pen;
    }

    public static SolidBrush GetPrintableBrush(SolidBrush brush)
    {
        if (brush.Color.R == 255 && brush.Color.G == 255 && brush.Color.B == 255)
        {
            SolidBrush newBrush = (SolidBrush)brush.Clone();
            newBrush.Color = Color.Black;
            return newBrush;
        }
        return brush;
    }

感谢Jim提供最近的答案。