【问题标题】:How to make a horizontal bar in a panel control when drawing on it?绘图时如何在面板控件中制作水平条?
【发布时间】:2016-05-23 11:54:15
【问题描述】:

我有一个面板,我需要在上面绘制一个水平图表。但有时图表对于面板来说可能太长,即使表格有最大尺寸。所以我想在面板上做一个水平条,让用户可以看到超出范围的绘图的剩余部分。

图表是这样的:

如您所见,图表超出了面板和表单的范围。我不知道怎么做,所以我没有代码可以显示。那么如何使用基本的方法呢?

【问题讨论】:

    标签: c# winforms drawing panel


    【解决方案1】:

    是的,解决方案很简单,只要你要绘制的尺寸不超过 32k 像素宽度:

    • 将您的Panel 放入另一个邮箱。
    • 外层PanelAutoScroll=true
    • 您绘制的内部具有您的绘图的大小。
    • 您需要在 Paint 事件中进行绘制,无论如何您都应该这样做 (!)

    现在外部Panel 显示一个水平滚动条,用户可以左右滚动并查看绘图的所有部分..

    另一种选择是添加一个虚拟控件,该控件强制您的绘图 PanelAutoScroll 工作,但我发现使用两个 Panels 更简洁..

    注意:您应该使用PictureBox 或至少使用双缓冲Panel 子类来避免闪烁和撕裂:

    class DrawPanel : Panel
    {
        public DrawPanel()
        { DoubleBuffered = true; }
    }
    

    更新: 可以使用 PictureboxLabel(与 Autosize=false );两者都具有开箱即用的DoubleBuffered 属性,并且比Panels 更支持绘图。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多