登 录
DrawRectangle.cs//画矩形的类using System; using System.Collections.Generic; using System.Text; using System.Drawing; using System.Drawing.Drawing2D; namespace wndApp.Code { class DrawRectangle { public Point location;//屏幕上点的坐标 public Size size;//有长和宽的矩形 public Color foreColor;//前景色,以上全部是一个结构体 public Color backColor;//背景色 /// <summary> /// 画矩形的类的构造函数 /// </summary> /// <param name="initSize">初始大小</param> /// <param name="initForeColor">初始前景色</param> /// <param name="initBackColor">初始背景色</param> public DrawRectangle(Size initSize, Color initForeColor, Color initBackColor) { size = initSize; foreColor = initForeColor; backColor = initBackColor; location = new Point(10, 10);//结构的new与类的new有区别,这里就是给结构内字段赋值了. } /// <summary> /// 在指定窗体上画矩形 /// </summary> /// <param name="winHandle">窗体句柄,是一个结构体</param> public void Draw(System.IntPtr winHandle) { Graphics g = Graphics.FromHwnd(winHandle);//从窗口句柄载入 GraphicsPath gp = new GraphicsPath();//Drawing2D空间 Rectangle rec = new Rectangle(location, size); gp.AddRectangle(rec); Color[] surroundColor = new Color[] { backColor }; PathGradientBrush pb = new PathGradientBrush(gp);//渐变 pb.CenterColor = foreColor; pb.SurroundColors = surroundColor; g.FillPath(pb, gp);//参数,效果和路径 } /// <summary> /// 擦除指定窗体中的方块 /// </summary> /// <param name="winHandle"></param> public void Erase(System.IntPtr winHandle) { Graphics g = Graphics.FromHwnd(winHandle); Rectangle rec = new Rectangle(location, size); g.FillRectangle(new SolidBrush(Color.Red), rec); } } } 调用的方法:using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Drawing.Drawing2D; using System.Media; namespace wndApp { public partial class FrmDrawRectangle : Form { SoundPlayer sound = new SoundPlayer();//播放默认的声音,如果指定声音文件则播放指定声音 public FrmDrawRectangle() { InitializeComponent(); } private void btnDraw_Click(object sender, EventArgs e) { sound.SoundLocation = "FinishOneLine.wav"; sound.Play(); } //按钮的重绘事件 private void btnDraw_Paint(object sender, PaintEventArgs e) { Size size = new Size(50, 50); Code.DrawRectangle rec = new Code.DrawRectangle(size,Color.Green,Color.Gold); rec.Draw(this.pBoxMain.Handle);//PictureBox窗口句柄 } private void btnKey_Click(object sender, EventArgs e) { FrmKeyDown key = new FrmKeyDown(); key.Show(); } //Label的重绘事件,Text的改变不用刷新,图像的改变需要刷新 private void lblDraw_Paint(object sender, PaintEventArgs e) { Graphics gp = e.Graphics; //gp.Clear(Color.Black);//不清除的话,则在原来图像上添加 Pen p = new Pen(Color.Red); gp.DrawLine(p, 1, 30, 150, 30); } //调用Label的Paint事件 //引发Button的单击事件 private void btnReDraw_Click(object sender, EventArgs e) { Size size = new Size(50, 50); Code.DrawRectangle rec = new Code.DrawRectangle(size, Color.Green, Color.Gold); rec.Draw(this.lblDraw.Handle); //lblDraw.Invalidate();//调用Paint重绘,一重绘就会清除原来的所有图像,更新画布. btnKey.PerformClick();//引发Button的单击事件 } } } end这里还有些知识点不清晰,先保存.
抱歉!评论已关闭.