2013-09-04 19 views
7

baskı olmaz: Çok iyi gerçekten çalışıyorDüğmeler Aşağıdaki kod ile bir WPF penceresini yazdırmaya çalışıyorum

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); 
} 

ama gerçekten garip bir nedenden dolayı, düğmeler görünmüyor basılı belge.

Ben çünkü ben butonuna bir DropShadowEffect ayarlanmış olması gibi görünüyor keşfetti, bunu kaldırırsanız, düğme basılı belge üzerinde görüntülenir: Bu gerçekten kritik bir mesele değildir

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

, ama birisi bir çözüm bulsaydı güzel olurdu.

cevap

2

Bunun gibi efektler, GPU üzerinde çalışan piksel gölgelendiricileri olarak uygulanır. En iyi tahminim, bir baskı işi için yapılan işlemin CPU üzerinde yapılmakta olmasıdır, bu yüzden çizimi yapmak için gerekli piksel gölgelendiricilere erişimi olmayacaktır.

Muhtemelen en iyi seçim, yazdırmadan hemen önce alt gölgeleri devre dışı bırakmak ve sonra tekrar etkinleştirmektir.

İlgili konular