C# 特定栏目的屏幕截图&;网格中的行

C# 特定栏目的屏幕截图&;网格中的行,c#,wpf,screenshot,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)";

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

是的。我不知道你到底想在什么情况下使用它。但是,如果您只想将其保存在另一个数组中,例如,您可以使用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];
    }
}
int[,]数组=新的int[2,3];
静态int[,]屏幕截图(int行、int列1、int列2)
{
int[,]temp=新int[colum2-colum1,1];
对于(int i=0;i

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

是的。我不知道你到底想在什么情况下使用它。但是,如果您只想将其保存在另一个数组中,例如,您可以使用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];
    }
}
int[,]数组=新的int[2,3];
静态int[,]屏幕截图(int行、int列1、int列2)
{
int[,]temp=新int[colum2-colum1,1];
对于(int i=0;i

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

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

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

谢谢,但我如何使用该数组保存图片?这会有点复杂。你能多描述一点你想在其中使用它的情况吗?这样我就可以给出更好的答案了。我更新了我的问题,对它做了更多的解释。非常感谢,谢谢。但是我如何使用这个数组来保存图片呢?那会有点复杂。你能多描述一点你想在其中使用它的情况吗?这样我就可以给出更好的答案了。我更新了我的问题,对它做了更多的解释。非常感谢,但是屏幕上没有什么东西像是在特定区域捕获所有内容?(例如,在矩形、堆叠面板、网格中…)。还有一个问题,那就是我的应用程序中有一个很好的渐变背景,并且绘图仪被设置为具有透明背景。如果我用上面描述的方式捕捉它们,结果的背景是黑色的。所以我认为我唯一的选择就是找出如何在特定的地方截图。谢谢你的答案(如果你画了所有的东西,就有了。Iknow XNA有一个很好的方法可以使用Texture2D类或RenderTarget2D类截图。两者都有可能这样做。如果没有,您也可以编写一些hlsl代码来渲染屏幕的一部分,并将其保存为图像。谢谢,我将研究XNA。早上4点40分,该睡觉了。如果我找到了,我会发布解决方案。但这不是像在屏幕上特定区域捕获所有内容那样的事情吗?(例如,在矩形、堆叠面板、网格中…)。还有一个问题,那就是我的应用程序中有一个很好的渐变背景,并且绘图仪被设置为具有透明背景。如果我用上面描述的方式捕捉它们,结果的背景是黑色的。所以我认为我唯一的选择就是找出如何在特定的地方截图。谢谢你的答案(如果你画了所有的东西,就有了。Iknow XNA有一个很好的方法可以使用Texture2D类或RenderTarget2D类截图。两者都有可能这样做。如果没有,您也可以编写一些hlsl代码来渲染屏幕的一部分,并将其保存为图像。谢谢,我将研究XNA。早上4点40分,该睡觉了。如果我找到了,我会发布解决方案。