网格的特定列和行的屏幕截图

时间:2013-05-25 23:33:23

标签: c# wpf screenshot

想象一下,我有一个包含3列和2行的网格。我想拍一下2-3栏和第1栏内的内容。这可能吗?

现在我可以使用此方法将截图截取到我的情节图

private void Capture()
            {
                SaveFileDialog dlg = new SaveFileDialog();
                dlg.FileName = "hello";
                dlg.Filter = "JPEG (*.jpg)|*.jpg|PNG (*.png)";
                dlg.FilterIndex = 1;
                if (dlg.ShowDialog().GetValueOrDefault(false))
                {
                    string filePath = dlg.FileName;
                    plotter.SaveScreenshot(filePath);
                    e.Handled = true;
                }

            }

如果plotter是ChartPlotter(DynamicDataDisplay中的一个类),它有一个名为“SaveScreenshot”的方法。

但它只需截取该特定绘图仪的截图。我的想法是拥有几个绘图仪,并能够为所有人绘制屏幕截图。为此,我可以将它们放入StackPanel或网格中,并整体拍摄该元素(包含我的所有绘图仪)。

2 个答案:

答案 0 :(得分:1)

是的,是的。我不知道在什么情况下你想要使用它。但是如果你只是想把它保存在另一个数组中,例如你可以用for循环来做。例如,只需要一个循环:

int[,] array = new int[2,3];


static int[,] ScreenShot(int row, int colum1, int colum2)
{
    int[,] temp = new int[colum2-colum1, 1];
    for (int i = 0; i < colum2-colum1; i++)
    {
        temp[i,1] = array[i+colum1,row];
    }
}

如果你想让它有更多的行,你可以扩展它。

答案 1 :(得分:0)

这不是最快或最好的解决方案,但你可以制作一组绘图仪,然后创建一个临时的小图片阵列(会使用比jpg更无损的东西)并在最后组合它们。这对你有用吗?