⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 作业~画出载入的声音文件波形~并在可在画板上画涂鸦
💻 CS
📖 第 1 页 / 共 2 页
字号:
			// 
			this.label2.Location = new System.Drawing.Point(8, 8);
			this.label2.Name = "label2";
			this.label2.Size = new System.Drawing.Size(72, 23);
			this.label2.TabIndex = 10;
			this.label2.Text = "弯曲模式:";
			// 
			// trackBar2
			// 
			this.trackBar2.Location = new System.Drawing.Point(0, 96);
			this.trackBar2.Minimum = 1;
			this.trackBar2.Name = "trackBar2";
			this.trackBar2.Size = new System.Drawing.Size(112, 45);
			this.trackBar2.TabIndex = 11;
			this.trackBar2.Value = 1;
			this.trackBar2.Scroll += new System.EventHandler(this.trackBar2_Scroll);
			// 
			// label5
			// 
			this.label5.Location = new System.Drawing.Point(8, 8);
			this.label5.Name = "label5";
			this.label5.Size = new System.Drawing.Size(48, 32);
			this.label5.TabIndex = 11;
			this.label5.Text = "放大显示范围";
			// 
			// label6
			// 
			this.label6.Location = new System.Drawing.Point(160, 8);
			this.label6.Name = "label6";
			this.label6.Size = new System.Drawing.Size(48, 32);
			this.label6.TabIndex = 12;
			this.label6.Text = "移动显示区域";
			// 
			// panel3
			// 
			this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
			this.panel3.Controls.Add(this.label5);
			this.panel3.Controls.Add(this.hScrollBar1);
			this.panel3.Controls.Add(this.label6);
			this.panel3.Controls.Add(this.hScrollBar2);
			this.panel3.Location = new System.Drawing.Point(416, 48);
			this.panel3.Name = "panel3";
			this.panel3.Size = new System.Drawing.Size(304, 48);
			this.panel3.TabIndex = 13;
			// 
			// Form1
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
			this.ClientSize = new System.Drawing.Size(728, 545);
			this.Controls.Add(this.panel3);
			this.Controls.Add(this.panel2);
			this.Controls.Add(this.button1);
			this.Controls.Add(this.label1);
			this.Controls.Add(this.panel1);
			this.Controls.Add(this.textBox1);
			this.Controls.Add(this.mm1);
			this.Controls.Add(this.p1);
			this.Controls.Add(this.toolBar1);
			this.Menu = this.mainMenu1;
			this.Name = "Form1";
			this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
			this.Text = "Form1";
			((System.ComponentModel.ISupportInitialize)(this.mm1)).EndInit();
			this.panel1.ResumeLayout(false);
			((System.ComponentModel.ISupportInitialize)(this.trackBar1)).EndInit();
			this.panel2.ResumeLayout(false);
			((System.ComponentModel.ISupportInitialize)(this.trackBar2)).EndInit();
			this.panel3.ResumeLayout(false);
			this.ResumeLayout(false);

		}
		#endregion

		/// <summary>
		/// 应用程序的主入口点。
		/// </summary>
		[STAThread]
		static void Main() 
		{
			Application.Run(new Form1());
		}

		private void menuItem5_Click(object sender, System.EventArgs e)
		{
			mm1.Command="open";
			mm1.Command="play";
		}

		private void menuItem2_Click(object sender, System.EventArgs e)
		{
		 	openFileDialog1.Filter  = "wav Files (*.wav)|*.wav";
			if(openFileDialog1.ShowDialog () == DialogResult.OK)                  // 显示对话框界面
				FILE_NAME = openFileDialog1.FileName;
			if (FILE_NAME == "")   return;
			fs = new FileStream(FILE_NAME,FileMode.Open,FileAccess.Read);         //利用选择结果打开文件
            r = new BinaryReader(fs);
			head = new byte[44];
			head = (byte[])r.ReadBytes(44);
			channels = head[22];                     // 声道数
			frequence = head[24] + head[25]*256;     // 采样频率
			samplebits = head[34] + head[35]*256;    // 样本记录位数
			datlen = head[40] + head[41]*256;// 音频文件中全部样本数据字节数
			textBox1.Text= channels.ToString()+ ", "  + frequence.ToString() +", "+samplebits.ToString()+ ", "+datlen.ToString();
			mm1.DeviceType="waveaudio";
			mm1.FileName=FILE_NAME;
			fs.Position = 44;
			dlength =400;
			if (samplebits == 8)
			{
				aa = new byte[dlength];
				aa = (byte[])r.ReadBytes(dlength); 
			}
			else
			{
				bb = new  ushort[dlength];
				for(int i=0; i<dlength; i++)  bb[i]= r.ReadUInt16(); 
			}
//*/
		}
        
		private void menuItem3_Click(object sender, System.EventArgs e)
		{
			fs.Close();           // fs是FileStream对象
			r.Close();            // r是BinaryReader对象
		}
        double hs,vs;
		int x1,y1,x2,y2;
		private void pictureBox1_Click(object sender, System.EventArgs e)
		{
		
		}
        int i;
		private void menuItem6_Click(object sender, System.EventArgs e)
		{

			g=p1.CreateGraphics();
			g.Clear(p1.BackColor);
			pen = new Pen(Color.Red,1);       //定义画图笔笔色和线宽

			if (samplebits==8)
			{
				hs = Convert.ToDouble((p1.Width-10) /dlength);
				vs = Convert.ToDouble((p1.Height-10) / 255.0);	

				x1 = 0;
				y1 = Convert.ToUInt16(aa[0] * vs);
      
				for (int i=1; i<dlength-1;  i+=1)
				{
					x2 = Convert.ToUInt16( i * hs );
					y2 = Convert.ToUInt16(aa[i]* vs);
					g.DrawLine(pen,x1,y1,x2,y2);               //画线
					x1 = x2;   y1 = y2;
				}
			}
			
			else             // samplebits==16
			{
				hs = Convert.ToDouble((p1.Width-10) /  dlength);
				vs = Convert.ToDouble((p1.Height-100) / 65535.0);	
				x1 = 0;
				y1 = Convert.ToUInt16(bb[0] * vs);
      
				for (i=1; i<dlength-1;  i+=1)
				{
					x2 = Convert.ToUInt16( i * hs );
					y2 = Convert.ToUInt16(bb[i]* vs);
					g.DrawLine(pen,x1,y1,x2,y2);               //画线
					x1 = x2;   y1 = y2;
				}
			}

		}

		private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
		{
			if(e.Button.Text == "打开")
			{
				menuItem2_Click(sender,e);
			}
			if(e.Button.Text == "图画")
			{
				menuItem6_Click(sender,e);
			}
			if(e.Button.Text == "播放")
			{
				menuItem5_Click(sender,e);
			}
			if(e.Button.Text == "退出")
			{
				menuItem3_Click(sender,e);
			}
		}

		private void hScrollBar1_Scroll(object sender, System.Windows.Forms.ScrollEventArgs e)
		{
			dlength = hScrollBar1.Value;
			fs.Position = 44 + hScrollBar2.Value;
			if (samplebits == 8)
			{
				aa = new byte[dlength];
				aa = (byte[])r.ReadBytes(dlength); 
			}
			else
			{
				bb = new  ushort[dlength];
				for(int i=0; i<dlength; i++)  bb[i]= r.ReadUInt16(); 
			}
			menuItem6_Click(sender,e);

		}
        long tlong;
		private void hScrollBar2_Scroll(object sender, System.Windows.Forms.ScrollEventArgs e)
		{
			fs.Position = 44 + hScrollBar2.Value;
			if (samplebits == 8)
			{
				aa = new byte[dlength];
				aa = (byte[])r.ReadBytes(dlength); 
			}
			else
			{
				bb = new  ushort[dlength];
				for(int i=0; i<dlength; i++)  bb[i]= r.ReadUInt16(); 
			}
			menuItem6_Click(sender,e);

		}

		private void menuItem9_Click(object sender, System.EventArgs e)
		{
			tlong = frequence/10;
			dlength = dlength;
	        timer1.Enabled = true;
		}

		private void timer1_Tick(object sender, System.EventArgs e)
		{
			fs.Position = fs.Position + tlong;
			if (samplebits == 8)
			{
				aa = new byte[dlength];
				aa = (byte[])r.ReadBytes(dlength); 
			}
			else
			{
				bb = new  ushort[dlength];
				for(int i=0; i<dlength; i++)  bb[i]= r.ReadUInt16(); 
			}
			menuItem6_Click(sender,e);	
		}
        int xleng;
		int yleng;
		private void menuItem10_Click(object sender, System.EventArgs e)
		{   
			fs.Position = 5000;
			g=p1.CreateGraphics();
			g.Clear(p1.BackColor);
			pen = new Pen(Color.Red,1);       //定义画图笔笔色和线宽

			if (samplebits==8)
			{
				hs = Convert.ToDouble((p1.Width-10) /dlength);
				vs = Convert.ToDouble((p1.Height-10) / 255.0);	
				x1 = 0;
				y1 = Convert.ToUInt16(aa[0] * vs);
      
				for (int i=1; i<dlength-1;  i+=1)
				{

					x2 = Convert.ToUInt16( i * hs );
					y2 = Convert.ToUInt16(aa[i]* vs);
					if(x2>x1) xleng = x2 -x1;
					else xleng = x1 - x2;
					if(y2>y1) yleng = y2 - y1;
					else yleng = y1 - y2;
					g.DrawRectangle(pen,x1,y1,(int)hs,yleng);               
					x1 = x2;   y1 = y2;
				}
			}
			
			else             // samplebits==16
			{
				hs = Convert.ToDouble((p1.Width-10) /  dlength);
				vs = Convert.ToDouble((p1.Height-100) / 65535.0);	
				x1 = 0;
				y1 = Convert.ToUInt16(bb[0] * vs);
      
				for (i=1; i<dlength-1;  i+=1)
				{
					if(x2>x1) xleng = x2 -x1;
					else xleng = x1 - x2;
					if(y2>y1) yleng = y2 - y1;
					else yleng = y1 - y2;
					g.DrawRectangle(pen,x1,y1,(int)hs,yleng);  
					x1 = x2;   y1 = y2;
				}
			}
		}
        int xa=0,ya=0;
		int xb=0,yb=0;
		Graphics g1;
		Point[] pt = new Point[3];
		private void pictureBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
		{
            g1 = pictureBox1.CreateGraphics();
			pen = new Pen(colorDialog1.Color,trackBar2.Value);       //定义画图笔笔色和线宽
			xb = e.X;
			yb = e.Y;
			pt[0] = new Point(xb,yb);
			if((xa!=0)&&(ya!=0))
			{
				g1.DrawCurve(pen,pt,(float)trackBar1.Value);
			//	g1.DrawLine(pen,xa,ya,xb,yb);
			}
			xa = xb; ya = yb;
			pt[2] = pt[1];
			pt[1] = pt[0];
            g1.Dispose();
		}

		private void button1_Click(object sender, System.EventArgs e)
		{
			pictureBox1.Image = null;
            xa=0;ya=0;
		    xb=0;yb=0;
		}

		private void trackBar2_Scroll(object sender, System.EventArgs e)
		{
			label4.Text = ""+trackBar2.Value;
		}

		private void button2_Click(object sender, System.EventArgs e)
		{
			colorDialog1.ShowDialog();
		}
        Point[] pt2;
		private void menuItem11_Click(object sender, System.EventArgs e)
		{
/*			g=p1.CreateGraphics();
			g.Clear(p1.BackColor);
			pen = new Pen(Color.Red,1);       //定义画图笔笔色和线宽
            pt2 = new Point[dlength];
			if (samplebits==8)
			{
				hs = Convert.ToDouble((p1.Width-10) /dlength);
				vs = Convert.ToDouble((p1.Height-10) / 255.0);	
				x1 = 0;
				y1 = Convert.ToUInt16(aa[0] * vs);
				g1 = pictureBox1.CreateGraphics();
                pt2[0].X = pt2[1].Y = y1;
				for (int i=1; i<dlength-1;  i+=1)
				{
					y2 = Convert.ToUInt16(aa[i]* vs);
					pt2[i].X = pt2[i].Y = y2;
				}
				g1.DrawCurve(pen,pt2,(float)trackBar1.Value);
			}
			
			else             // samplebits==16
			{
				hs = Convert.ToDouble((p1.Width-10) /  dlength);
				vs = Convert.ToDouble((p1.Height-100) / 65535.0);	
				x1 = 0;
				y1 = Convert.ToUInt16(bb[0] * vs);
				g1 = pictureBox1.CreateGraphics();
				pt2[0].X = pt2[1].Y = y1;
				for (int i=1; i<dlength-1;  i+=1)
				{
					y2 = Convert.ToUInt16(bb[i]* vs);
					pt2[i].X = pt2[i].Y = y2;
				}
				g1.DrawCurve(pen,pt2,(float)trackBar1.Value);
			}
			*/
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -