Unit 5 DrawLine, DrawLines, DrawArc,  鍵盤事件 (畫線、畫弧線)
2017/03/22
X=0,y=0 (0,0)視窗最左上角的點
(this.Width,this.Height)最右下角的點
Form1_Load():程式執行第一個執行的事件,只執行一次,通常設定變數初值或環境設定(視窗寬高,最大化,計時器啟動,...)
this 表作用視窗
//宣告點的陣列含5個初值(存五個點) (Point表整數,Point F表浮點數可用小數)
Point[] p = new
Point[5]; //Pen表線型,Brush塗色
設定線型pe1為紅色5點寬
Pen pe1 = new Pen(Color.Red,
5);
如何宣告一個含有5個點的陣列
Point[] p = new Point[5];
給定點陣列p,如何畫連續線(其中線型顏色線寬為pe1)
e.Graphics.DrawLines(pe1, p);
給定點陣列p,如何畫弧線(其中線型顏色線寬為pe2)
e.Graphics.DrawCurve(pe2, p);
填色
e.Graphics.FillClosedCurve(Brushes.LightSeaGreen,
p); //Brushes表很多顏色
宣告亂數種子rd
Random rd = new Random();
亂數範圍100~800
rd.Next(100, 800)
5個點陣列初值亂數設定
for (int i = 0; i < p.Length; i++) //陣列長度個數
p[i] = new Point(rd.Next(100,
800), rd.Next(100, 600));//設定xy座標為亂數
根據點陣列p顯示填滿的封閉區域(色彩值自訂)3%/5%
根據點陣列p每隔0.5秒顯示填滿的封閉區域(色彩值自訂)5%/5%
根據點陣列p每隔0.5秒顯示填滿的封閉區域(色彩值亂數)7%/5%
(hint: 利用Brush型態的陣列)
宣告陣列 這些填滿的區域
using System;
using
System.Collections.Generic;
using
System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Week5
{
    public partial class Form1 : Form
    {
        public Form1()
        {
           
InitializeComponent();
        }
        //宣告點的陣列含5個初值(存五個點)(Point表整數,Point F表浮點數可用小數)
        Point[] p = new Point[5];
        Pen pe1 = new Pen(Color.Red,
5); //設定圖刷紅色,5個像點,Pen表線型,Brush塗色
        Pen pe2 = new Pen(Color.Blue,10);
        Random rd = new Random();//宣告亂數種子rd
        Brush[] br = new Brush[3];
        private void
Form1_Load(object sender, EventArgs e)
        //程式執行第一個執行的事件,只執行一次,通常設定變數初值或環境設定(視窗寬高,最大化,計時器啟動,...)
        {
            this.Width = 960; this.Height
= 720; //表作用視窗
            br[0] =
Brushes.RoyalBlue;
            br[1] =
Brushes.Purple;
            br[2] =
Brushes.Olive;
            p[0] = new Point(240,
310);
            p[1] = new Point(290,
180);
            p[2] = new Point(390,
120);
            p[3] = new Point(480,
200);
            p[4] = new Point(200,
510);
        }
        private void
Form1_Paint(object sender, PaintEventArgs e)
        {
            this.DoubleBuffered = true;
//避免閃爍
           
e.Graphics.DrawLines(pe1, p);//給定點陣列p,畫連續線(其中線型顏色線寬為pe1)
           
e.Graphics.DrawCurve(pe2, p);//給定點陣列p,畫弧線(其中線型顏色線寬為pe2)
           
e.Graphics.FillClosedCurve(br[rd.Next(0,3)], p); //Brushes表很多顏色
        }
        private void
timer1_Tick(object sender, EventArgs e)
        {
            for (int i = 0; i
< p.Length; i++) //陣列長度個數
               
p[i] = new Point(rd.Next(100,
800), rd.Next(100, 600));//設定xy座標為亂數
            this.Refresh();
        }
    }
}
 
沒有留言:
張貼留言