我有一個列表框,其ItemsSource是綁定的。無論如何,將每個單獨的列表框項目轉換爲運行時屏幕上顯示的內容的圖像?將ListBoxItem轉換爲圖像
編輯:
我現在有這個權利,它似乎並沒有被工作雖然...
ListBoxItem item = new ListBoxItem();
item = (ListBoxItem)(lb1.ItemContainerGenerator.ContainerFromIndex(0));
//itempres = item.Content as ItemsPresenter;
//double width = itempres.ActualWidth;
//double height = itempres.ActualHeight;
double width = item.Width;
double height = item.Height;
//RenderTargetBitmap bmpCopied = new RenderTargetBitmap((int)Math.Round(width), (int)Math.Round(height), 100, 100, PixelFormats.Default);
RenderTargetBitmap bmpCopied = new RenderTargetBitmap(100, 500, 100, 100, PixelFormats.Default);
DrawingVisual drawingVisual = new DrawingVisual();
using (DrawingContext drawingContext = drawingVisual.RenderOpen())
{
VisualBrush visualBrush = new VisualBrush(item);
drawingContext.DrawRectangle(visualBrush, null, new Rect(new Point(), new Size(width, height)));
}
bmpCopied.Render(drawingVisual);
displayImage = new Image();
displayImage.Source = bmpCopied;
fd.Blocks.Add(new BlockUIContainer(displayImage));
//ListBox lbNew = new ListBox();
//lbNew.Style = lb1.Style;
//lbNew.ItemsSource = lb1.ItemsSource;
//lbNew.ItemContainerStyle = lb1.ItemContainerStyle;
//lbNew.ItemTemplateSelector = lb1.ItemTemplateSelector;
//UIElement elementAll = lbNew as UIElement;
//fd.Blocks.Clear();
//fd.Blocks.Add(new BlockUIContainer(elementAll));
//}
PrintDialog pd = new PrintDialog();
if (pd.ShowDialog() == true)
{
fd.PageHeight = pd.PrintableAreaHeight;
fd.PageWidth = pd.PrintableAreaWidth;
fd.PagePadding = new Thickness(96);
IDocumentPaginatorSource dps = fd;
pd.PrintDocument(dps.DocumentPaginator, "flow doc");
}
你能解釋一下你想要做更多一點嗎?你想讓你的列表框項目成爲圖像,或者你只是想將列表框項目,因爲它們出現,轉換成圖像,有點像屏幕帽子? – 2012-08-10 13:53:09
什麼是綁定?圖像路徑的ObservableCollection? – 2012-08-10 13:53:19
我想將列表框項目顯示爲圖像時轉換爲屏幕截圖。 Listbox綁定到我創建的類型的可觀察集合。謝謝。 – KateMak 2012-08-10 14:04:23