2

私はゲームのレベル エディターを作成しています。標準的なプラットフォーマーです。デフォルトでは、レベル サイズは 24_Height と 32_Width の両方に 32 のタイル サイズを掛けたものです。したがって、デフォルトでは、パネル コンテナのサイズは 1024 x 768 です。

パネルのサイズを変更するウィンドウフォームで行と列を変更できます。ここで問題に直面しています。デフォルトのサイズは問題ないように見えますが、サイズを大きくすると、パネル自体は現在のサイズにロックされず、代わりに幅と高さの両方でそれぞれ拡張されます。

私が望むのは、デフォルトのサイズでロックされ、パネルがデフォルトよりも大きくなったときにスクロールバーが適切な場所に表示されるようにすることです。

このため、イベントタブの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);
    }
}
4

0 に答える 0