2013-09-04 6 views
7

印刷されません:それは本当によく働くボタンは、私は次のコードでWPFウィンドウを印刷しようとしている

PrintDialog printDialog = new PrintDialog(); 
if (printDialog.ShowDialog() == true) 
{ 
    var printArea = printDialog.PrintQueue.GetPrintCapabilities() 
         .PageImageableArea; 

    var item = (FrameworkElement)this; 
    DrawingVisual visual = new DrawingVisual(); 
    using (DrawingContext context = visual.RenderOpen()) 
    { 
     VisualBrush brush = new VisualBrush(item); 
     context.DrawRectangle(brush, null, 
      new Rect(new Point(printArea.OriginWidth, printArea.OriginHeight), 
        new Size(item.ActualWidth, item.ActualHeight))); 
    } 
    printDialog.PrintVisual(visual, String.Empty); 
} 

、本当に奇妙な理由のために、ボタンが上に表示されません印刷されたドキュメント

私は原因は私がボタンの上にDropShadowEffectを設定したことであるように見えることを発見し、私はそれを削除した場合、ボタンは印刷された文書に表示されます。これは本当に重要な問題ではありません

<Setter Property="Effect"> 
    <Setter.Value> 
     <DropShadowEffect Color="Gray" Opacity=".50" ShadowDepth="8" /> 
    </Setter.Value> 
</Setter> 

、誰かが回避策を講じていればいいだろう。

答えて

2

このようなエフェクトは、GPUで動作するピクセルシェーダとして実装されています。私の推測では、印刷ジョブに対して行われたレンダリングはCPU上で行われているため、描画に必要なピクセルシェーダにアクセスすることはできません。

おそらく、印刷する直前にドロップシャドウを無効にしてから、再び有効にすることをお勧めします。

関連する問題