Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使picturebox动态滚动_C#_Winforms_Scroll_Graphics_Picturebox - Fatal编程技术网

C# 使picturebox动态滚动

C# 使picturebox动态滚动,c#,winforms,scroll,graphics,picturebox,C#,Winforms,Scroll,Graphics,Picturebox,我在这里看到了一些答案,但我没有找到适合我问题的答案 我有一个图片框,我正在它上面动态地画一些矩形(像这样:) 现在,如果我画了很多矩形,那么图片框不够大,我看不到所有的矩形。。。所以我需要使图片框可以滚动 怎么可能呢 注意:我没有面板,只有一个通过代码动态填充的图片框。您应该将图片框放置在面板内,并使用AutoScroll=true 然后,您只需根据需要将图片盒放大,甚至可以在创建绘图矩形的地方 public DrawRectangle(Rectangle r, Color c, float

我在这里看到了一些答案,但我没有找到适合我问题的答案

我有一个图片框,我正在它上面动态地画一些矩形(像这样:)

现在,如果我画了很多矩形,那么图片框不够大,我看不到所有的矩形。。。所以我需要使图片框可以滚动

怎么可能呢


注意:我没有面板,只有一个通过代码动态填充的图片框。

您应该将
图片框
放置在
面板
内,并使用
AutoScroll=true

然后,您只需根据需要将
图片盒
放大,甚至可以在创建
绘图矩形
的地方

public DrawRectangle(Rectangle r, Color c, float w, Control ct)
{
    color = c;
    width = w;
    rect = r;
    surface = ct;

    if ((r.Right > surface.Width)  ||  (r.Bottom > surface.Height))
    {
        surface.Size = new Size(Math.Max(surface.Width, r.Right),
                                Math.Max(surface.Height, r.Bottom)) ;
    }
}

为什么
PictureBox
?您可以在任何
控件中绘制。这里您需要一个
ScrollableControl
派生类。@IvanStoev,因为当鼠标悬停在pcture框上时,我也在遍历所有矩形,并重新绘制矩形(您可以在我编写的url中看到),如果我不使用图片框,当鼠标悬停在控件上时,我会遇到类似filckr的错误。
PictureBox
是为了简化显示图像。同样,您可以在任何
控件中使用或不使用闪烁进行绘制。不正确。他必须对每个控件进行子类化,以包含双缓冲。当然,这没什么大不了的。但是在自动扫描面板中嵌套一个PBox就可以了。必要时,他所需要做的就是放大PBox。。另外:自动滚动仅用于显示嵌套控件,而不用于显示您绘制的图形,因此嵌套是必要的。@TaW这听起来更像VB6 ish解决方案,但当然是一个选项:)非常感谢!再一次,你为我节省了很多时间!很高兴听到它对你也有用。进展如何另外:如果有帮助的话,别忘了接受答案……不管我们在评论中有什么“学术”讨论,这绝对值得投票支持:)