C#でDXライブラリを使おうとしています。
目的はゲームでは無く、要素が非常に多いグラフのリアルタイム表示です(たとえば過去10年分の株価推移などのチャートなど)。
グラフ表示はWindowフォームに行い、フォームサイズは随時ユーザーによって変更されます。
ですので、グラフの描画領域もフォームのサイズに合わせて変化させようとしていますが、どうもDxLib_Init()時点の初期化された描画サイズ以上には拡張できないようで困っています。
下記のようなソースで試しています。
public Form1()
{
InitializeComponent();
// DXライブラリの描画ハンドルを本フォームにする
DX.SetUserWindow(this.Handle);
// 描画先画面を裏にする
DX.SetDrawScreen(DX.DX_SCREEN_BACK);
// ウインドウモードに変更
DX.ChangeWindowMode(DX.TRUE);
DX.SetDrawScreen(0);
// 画面の背景色を白にする
DX.SetBackgroundColor(255, 255, 255);
// DXライブラリの初期化処理
if (DX.DxLib_Init() == -1)
{
Application.Exit();
}
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
// 描画可能領域のセット(これがうまくいかない…)
DX.SetDrawArea(0, 0, ClientSize.Width, ClientSize.Height);
// 裏画面を初期化
DX.ClearDrawScreen();
// 以後描画処理
・・・・
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
DX.DxLib_End();
}
それでVC++のライブラリソースを見てみたところ、DxLib_Init()でハンドルとしてわたってきているフォームのクライアント領域を描画対象にしたあとは、その範囲内でしか描画できないように読めました(DxWindow.cppを見ました)。
フォームのサイズに合わせて、リアルタイムに描画領域を変化させるようなことは無理でしょうか?