【问题标题】:c# drawing on the panel and scrolling the resultc# 在面板上绘图并滚动结果
【发布时间】:2013-05-06 01:54:18
【问题描述】:

我无法在一个面板上显示太大而无法看到的图表。 我必须滚动条来改变图表上的观点,但是当我想滚动图片时,形状在不同的位置上移动,一切都被压碎了。

看起来像这样here link 当我显示它时,就像这样here link 当我尝试查看图表底部时

每次滚动面板时,它看起来像应用程序绘制形状,当我进入图片底部时,左上角的点仍然是 (0,0) 而不是 (0,500)

我有算法,它将面板上的位置值和对象的 nr id 提供给数组,然后我有绘制它的循环,从字典中获取有关对象的信息以及他从数组中的位置。

如何解决这个问题? 感谢任何建议的

已编辑 我不想再画了小面板,所以我们必须有机会滚动并查看 grapf 的底部,左侧或他想要的这一侧。

我将尝试提供有关应用程序的更多详细信息。 午餐时,您会看到控制面板(form1),您可以在其中添加事件/功能/异或/或每个选项在图表上都有自己的形状。 因此,用户添加例如带有文本的事件,按下按钮添加创建对象并将其添加到集合中。他可以根据需要添加事件/功能,异或/或任意数量。

好的,当他添加了他想要的所有内容时,现在他想查看图表,所以他按下“生成图表”按钮,现在应用程序正在显示下一个带有面板和滚动条的窗口。您可以在链接中看到该窗口。 在此行之后的第二种形式

private void panel1_Paint(object sender, PaintEventArgs e){

我有将坐标值放到表中的算法,然后 forech 循环从字典(集合)中获取:

  • 应该在图形中间显示的文本,
  • 决定面板上形状类型的值。

从数组循环获取坐标值。

这是它的工作原理,我也可以在需要时将代码放在这里。

【问题讨论】:

    标签: c# drawing scrollbar panel


    【解决方案1】:

    标准错误是忘记将绘图偏移滚动位置。使用面板的 AutoScrollPosition 属性,如下所示:

        void panel1_Paint(object sender, PaintEventArgs e) {
            e.Graphics.TranslateTransform(panel1.AutoScrollPosition.X, panel1.AutoScrollPosition.Y);
            e.Graphics.DrawLine(Pens.Black, 0, 0, 300, 2000);
        }
    

    Panel 控件通常对绘画非常古怪,它被设计为容器控件。您通常还希望它具有双缓冲并在调整大小时强制重新绘制。设置 DoubleBuffered 和 ResizeRedraw 属性需要从 Panel 派生your own control

    【讨论】:

    • 感谢这个答案,但我解决了。我将滚动条添加到表单,而不是面板,它的工作;)
    • 我已经发布了我的question。你能帮帮我吗?
    【解决方案2】:

    每次滚动面板时,应用程序都会绘制形状

    你为什么不抹掉绘图区域,然后重新绘制形状?

    也许你可以发布一个代码sn-p?

    【讨论】:

    猜你喜欢
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    相关资源
    最近更新 更多