2014-10-29 2 views
2

예를 들어 실제로 PrintDialog를 표시하지 않고 비주얼을 그레이 스케일로 인쇄 할 수 있습니까?그레이 스케일 WPF로 비주얼 인쇄

PrintDialog dialog = new Dialog(); 
dialog.PrintQueue = new PrintQueue(new PrintServer(), printerNameAsString); 
dialog.PrintTicket.InputBin = InputBin.AutoSelect; 
// Further settings, e.g. PageMediaSize and scaling the visual.  

dialog.PrintVisual(myVisual, "myDescription"); 

어쨌든 비주얼을 그레이 스케일로 인쇄하려면 PrinterDialog를 사용할 수 있습니까? 아니면 시각적으로 그레이 스케일 출력을 할 수있는 다른 방법이 있습니까?

편집 : myVisual (인쇄 할 비주얼)은 그리드이므로 UIElement에서 상속됩니다. 편집 2 : 가능한 경우 회사 정책 때문에 외부 라이브러리를 사용하지 않는 것이 좋습니다.

+0

은'UIElement'에서 상속 한 'myVisual'입니까? –

+0

@KingKing 예, 실제로 그리드입니다. – Daniel

+0

여기 제공된 DLL을 사용합니다. http://bursjootech.blogspot.nl/2008/06/grayscale-effect-pixel-shader-effect-in.html – Bijan

답변

2

PrintDialog에서 :

myPrintDialog.PrintTicket.OutputColor = OutputColor.Grayscale; 

또한, PrintCapabilities를 사용하면 가능한 OutputColors를 실제로 확인할 수 있습니다.

PrintCapabilities capabilities = myPrintDialog.PrintQueue.GetPrintCapabilities(myPrintDialog.PrintTicket); 
ReadOnlyCollection<OutputColor> possibleColors = capabilities.OutputColorCapability; 

하드웨어에서 사용 가능합니다. 정상적으로 작동합니다.

1

Microsoft.Expression.Effects 어셈블리에서 표준 라이브러리를 사용해 볼 수 있습니다. 여기의 효과는 MonochromeEffect입니다. 그냥 인쇄하기 전에이 효과를 적용하여 시각적 인 :

myVisual.Effect = new MonochromeEffect();//make grayscale 
dialog.PrintVisual(myVisual, "myDescription"); 
myVisual.Effect = null; //turn it off 

당신이 사용하는 명령어 내가 위에서 언급 한 라이브러리를 가져오고 추가해야 다음 OutputColor 설정할 수 있습니다

using Microsoft.Expression.Media.Effects; 
+0

답변을 주셔서 감사합니다. 실제로 프린터에 회색조로 인쇄하라는 직접적인 방법을 원했습니다. 프린터가 "효과"를 처리하게하십시오. 글쎄, 이것이 불가능한 것으로 판명되면 솔루션은 목표를 달성하는 좋은 방법을 보여줍니다. – Daniel

+0

@ 대니얼 PrintDialog가 이러한 기능을 지원하지 않는다고 생각합니다. 또한 언급 한 라이브러리는 일종의 외부 또는 제 3 자도 아닙니다. Microsoft의 표준 라이브러리입니다. 자신의 라이브러리를 만들어 그레이 스케일 효과를 적용 할 수도 있지만 더 많은 작업이 필요합니다. –

+0

@Daniel 참조 목록에서 라이브러리를 찾을 수 없습니다 (가져올 때). –