1

想象一下,我有一个 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 或网格中,并为整个元素(包含我所有的绘图仪)拍照。

4

2 回答 2

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

如果你希望它有更多的行,你可以扩展它。

于 2013-05-26T01:23:31.363 回答
0

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

于 2013-05-26T01:59:42.410 回答