public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Bitmap m_bmp;
byte[] m_byArrClrInfo; //图片原始颜色信息
byte[] m_byArrClrBuff; //图片新的颜色信息
int[,] m_nArrWaveCurrent; //当前波形
int[,] m_nArrWaveNext; //下一帧的波形
int m_nBmpWidth;
int m_nBmpHeight;
int m_nBmpWidthBySize; //图片每行占用字节数
//设置波源 x,y波源坐标 r波源半径 h波源的能量大小
public void SetWavePoint(int x, int y, int r, int h)
{
//判断波源所在矩形位置是否越出图像 以便将越出部分坐标重置
int nXStart = x - r < 0 ? 0 : x - r; //波源矩形位置x轴起点
int nYStart = y - r < 0 ? 0 : y - r; //波源矩形位置y轴起点
int nXLen = x + r >= m_nBmpWidth ? m_nBmpWidth - 1 : x + r; //波源x轴矩形长度
int nYlen = y + r >= m_nBmpHeight ? m_nBmpHeight - 1 : y + r; //波源y轴矩形长度
for (int posX = nXStart; posX < nXLen; posX++)
{
for (int posY = nYStart; posY < nYlen; posY++)
{ //以点(x,y)半径为r内的点赋值一个能量
if ((posX - x) * (posX - x) + (posY - y) * (posY - y) < r * r)