首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Visual C# 2005 動畫效果實作(三):AboutBox 對話盒、RadioButton 切換動畫、OnResize 繪製球體

     編輯:關於C語言

AboutBox 對話盒:使用 VS2005 範本快速建立


private void AboutBox_Load(object sender, EventArgs e)
{
    AssemblyInfoClass myAssembly = new AssemblyInfoClass();
    labelProductName.Text = "產品名稱:" + myAssembly.Product;
    labelVersion.Text = "版本:" + myAssembly.Version;
    labelCopyright.Text = "版權宣告:" + myAssembly.Copyright;
    labelCompanyName.Text = "公司名稱:" + myAssembly.Company;
    textBoxDescription.Text = "細部描述:" + myAssembly.Description;
}

顯示 AboutBox


private void toolStripMenuItem4_Click(object sender, EventArgs e)
{
    AboutBox MyAboutBox = new AboutBox();
    MyAboutBox.StartPosition = FormStartPosition.CenterScreen;
    MyAboutBox.Show();
}

RadioButton 切換動畫類型


private void RadioButtons_CheckedChanged(object sender, EventArgs e)
{
    if (optWink.Checked) tmrAnimation.Interval = WINK_TIMER_INTERVAL;
    else if (optBall.Checked) tmrAnimation.Interval = BALL_TIMER_INTERVAL;
    else if (optText.Checked) tmrAnimation.Interval = TEXT_TIMER_INTERVAL;
    OnResize(EventArgs.Empty);
}

OnResize 重繪:Graphics.FillEllipse 繪製球體


protected override void OnResize(EventArgs ea)
{
    if (optWink.Checked)
    {
        Graphics grfx = CreateGraphics();
        this.Refresh();
    }
    else if (optBall.Checked)
    {
        Graphics grfx = CreateGraphics();
        grfx.Clear(BackColor);
        double dblRadius = Math.Min(ClientSize.Width / grfx.DpiX,
            ClientSize.Height / grfx.DpiY) / intBallSize;
        intBallRadiusX = (int)(dblRadius * grfx.DpiX);
        intBallRadiusY = (int)(dblRadius * grfx.DpiY);
        intBallMoveX = (int)(Math.Max(1, intBallRadiusX / intMoveSize));
        intBallMoveY = (int)(Math.Max(1, intBallRadiusY / intMoveSize));
        intBitmapWidthMargin = intBallMoveX;
        intBitmapHeightMargin = intBallMoveY;
        intBallBitmapWidth = 2 * (intBallRadiusX + intBitmapWidthMargin);
        intBallBitmapHeight = 2 * (intBallRadiusY + intBitmapHeightMargin);
        bitmap = new Bitmap(intBallBitmapWidth, intBallBitmapHeight);
        grfx = Graphics.FromImage(bitmap);
        grfx.Clear(BackColor);
        grfx.FillEllipse(Brushes.Red,
            new Rectangle(intBallMoveX, intBallMoveY,
                2 * intBallRadiusX, 2 * intBallRadiusY));
        intBallPositionX = ClientSize.Width / 2;
        intBallPositionY = ClientSize.Height / 2;
    }
    else if (optText.Checked)
    {
        Graphics grfx = CreateGraphics();
        grfx.Clear(BackColor);
    }
}

使用 FillEllipse 繪製紅色球體至 Bitmap,再於 Tick 事件中 DrawImage 顯示。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved