私はこのC++ MFCアプリケーションをC#WinFormに移植しようとしています。進行中の作業です。基本的に、私はいくつかのグループボックス領域に描画やりたい:グループボックス内でWinFormペイントイベントを使用する
私は自分の仕事をするためにフォームにペイントハンドラを追加しました:
private void FullColourPaletteForm_Paint(object sender, PaintEventArgs e)
{
// Do painting with e.Graphics
}
私はそれがなかったことを見て驚きました私のレンダリングを表示しない。しかし、Winformではgroupbox
と呼ばれるのではなく、container
と呼ばれています。だから、私は目に見えないようにコンテナを設定し、当然のことながら(ない全く正しいが)私のレンダリングが今visbleた:
を
どのように私は、コンテナの領域内で私の絵を行うことになっていますか?
これはなぜですか?私がしたのは、次のとおりです。
private void groupBox1_Paint(object sender, PaintEventArgs e)
{
base.OnPaint(e);
}
私のフォームのペイントが表示されます。
代わりにGroupBoxのペイントイベントを使用してください。 –
ありがとうございます。更新された質問をご覧ください。 –
各コントロールには、独自のペイントイベントがあります。フォームが描画されると(可視性が変更されたとき)、各コントロールの 'OnPaint'メソッドが呼び出されます(ペイントの最後に' Paint'イベントを呼び出します)。あなたがしようとしているのは、パレットを描画するためのカスタムコントロールを作成することです。 'GroupBox'にする必要はありません。代わりに' Control'を使うことができます。その 'GroupBox'ボーダーを保持したい場合は、' Paint'メソッドをオーバーライドし、 'base.OnPaint'を最初に呼び出して、その上に描画することができます。これが当てはまるかどうかは確かではありませんが、すべてを自分で描くことが必要な場合もあります( 'ControlPaint.DrawBorder'を使って枠線を描くことができます)。 – Sinatr