0

私は Windows フォームと C# を使用して何かを描画する初心者で、質問があります (インターネットで答えが見つかりませんでした)。ここに私の問題があります:トラックバーを使用して長方形のサイズを操作する単純なアプリケーションを構築しようとしています。

    namespace Drawing
{
    public partial class Form1 : Form
    {
        int size = 10;
        public Form1()
        {
            InitializeComponent();
            CenterToScreen();
        }

        protected override void OnPaint(PaintEventArgs pe)
        {

            Graphics g = pe.Graphics;
            Rectangle rect = new Rectangle(50,50, size,size);
            LinearGradientBrush IBrush = new LinearGradientBrush(rect, Color.Green, Color.Yellow,
                LinearGradientMode.BackwardDiagonal);
            g.FillRectangle(IBrush, rect);

        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {

        }

        private void trackBar1_Scroll(object sender, EventArgs e)
        {
           size = trackBar1.Value;
 // I was trying to put here OnPaint method but it doesnt work.
        }


    }
}

そして、tracBar1_Scroll が発生したときに OnPaint メソッドを呼び出す方法がわかりませんか? 助言がありますか?前もって感謝します。

4

3 に答える 3

3

これを呼び出すと、発進this.Invalidate()するイベントがトリガーさOnPaintれます。

于 2012-08-30T11:15:25.490 に答える
1

Form1_Paint1 つの可能性は、描画コードをとの両方から呼び出される別の関数に入れることですtrackBar1_Scroll

このメソッドは、Graphicsオブジェクトをパラメーターとして受け取ります。このようなもの:

private void DrawStuff( Graphics g )
{
    // your drawing logic goes here
}

そして、modify _Paint_Scrollのように:

private void Form1_Paint( object sender, PaintEventArgs e )
{
    DrawStuff( e.Graphics );
}

private void trackBar1.Scroll( object sender, EventArgs e )
{
    Graphics g = this.CreateGraphics();

    DrawStuff( g );

    g.Dispose();
}

_Paintまたは、フォームを強制的に無効にすることもできます。これにより、呼び出されることもトリガーされます。

private void trackBar1.Scroll( object sender, EventArgs e )
{
    this.Invalidate();
}

には 6 つのオーバーロードがあることに注意してくださいInvalidate()。これにより、描画のために無効にする必要があるものをさまざまなレベルで制御できます。

于 2012-08-30T11:23:14.553 に答える
0

このリンクもご覧ください。

http://msdn.microsoft.com/en-us/library/system.windows.forms.trackbar.aspx

InvokePaintBackground メソッドや BackColour など、便利なトラックバーに関するすべての情報が含まれています。

于 2012-08-30T11:18:30.373 に答える