我在.Net Windows Forms應用程序中創建了一個基本的cad查看器。渲染是用GDI完成的。GDI System.Drawing.Printing將白色轉換爲黑色
我試圖實現功能,以物理打印它,但圖紙主要包括白線文本&行(通常在黑色背景下查看),顯然不打印。
有沒有簡單的方法來強制白色元素打印爲黑色而不檢查每個元素的顏色?
簡單地顛倒顏色並不好,因爲有色實體需要保持完整。
我在.Net Windows Forms應用程序中創建了一個基本的cad查看器。渲染是用GDI完成的。GDI System.Drawing.Printing將白色轉換爲黑色
我試圖實現功能,以物理打印它,但圖紙主要包括白線文本&行(通常在黑色背景下查看),顯然不打印。
有沒有簡單的方法來強制白色元素打印爲黑色而不檢查每個元素的顏色?
簡單地顛倒顏色並不好,因爲有色實體需要保持完整。
我假設你有一些代碼在屏幕上或打印之前準備圖像。你可以傳遞一個參數來告訴它你想要哪些顏色變化的項目嗎?因此,而不是專門使用Pens.White
或Brushes.White
,在該方法的開始部分有一些代碼根據參數設置正確的畫筆。
您唯一的選擇是從Graphics
對象中獲取位圖並將所有白色像素轉換爲黑色。這是可行的,但可能不是你想要的。
我定期參與創建幾個簡單的工具類:
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;
}
感謝吉姆提供最接近的答案。
我創建了一堆類來存儲實體數據(線條,文本元素,形狀等)。當文件被讀取時,他們有自己的筆分配有顏色和線型等。看起來我不得不按照每個渲染類型分配筆的路線。 – 2011-03-25 16:30:51