使用滚动条创建动态大小的面板的方法是什么

时间:2012-11-23 04:30:19

标签: c# winforms

我正在制作游戏的关卡编辑器,你是标准的平台游戏。默认情况下,级别大小为24_Height& 32_Width都乘以35的tileize。因此,默认情况下Panel容器大小为1024 x 768.

您可以使用重新调整面板大小的窗体来更改行和列。这是我遇到问题的地方。默认大小看起来很好,但是当增加其大小时,面板本身不会锁定到当前大小,而是分别在Width和Height中扩展。

我想要的是它被锁定在默认大小,并且当Panel变得比默认值大时,滚动条会出现在适当的位置。

出于这个原因,我在事件选项卡中查看了autoscroll选项,但是将其设置为true似乎没有什么区别(因为即使面板离开表单也不会出现)。我看着改变最大尺寸值(目前为32000,32000),认为我仍然可以通过代码重新调整尺寸,但不能以相同的方式在形式中看到它。它不起作用。

http://img4host.net/upload/2305134050aef7f46b283.png

http://img4host.net/upload/2305174350aef8e7b580f.png

如果有必要,可以使用油漆代码,但考虑到我刚开始这个项目,它是非常空的。

private void MapPanel_Paint(object sender, PaintEventArgs e)
{
    if (MapPanel.Width < (oMapGrid.TileColsValue * oMapGrid.TileSizeValue))
        MapPanel.Width = (oMapGrid.TileColsValue * oMapGrid.TileSizeValue);

    if (MapPanel.Height < (oMapGrid.TileRowsValue * oMapGrid.TileSizeValue))
    {
        MapPanel.Height = (oMapGrid.TileRowsValue * oMapGrid.TileSizeValue);
        MapPanel.AutoScroll = true;
    }

    for (int Row = 0; Row < oMapGrid.TileRowsValue; Row++ )
    {
        oPen_and_Brush.ClassGraphics.DrawLine(oPen_and_Brush.ClassPen, 0, Row * oMapGrid.TileSizeValue, MapPanel.Width, Row * oMapGrid.TileSizeValue);
    }
    for (int Col = 0; Col < oMapGrid.TileColsValue; Col++)
    {
        oPen_and_Brush.ClassGraphics.DrawLine(oPen_and_Brush.ClassPen, Col * oMapGrid.TileSizeValue, 0, Col * oMapGrid.TileSizeValue, MapPanel.Height);
    }
}

0 个答案:

没有答案