C#实现淡入淡出显示图像效果显示图片。
privatevoidbutton1_Click(objectsender,EventArgse)
{
//淡入显示图像
try
{
Graphicsg=this.panel1.CreateGraphics();
g.Clear(Color.Gray);
intwidth=MyBitmap.Width;
intheight=MyBitmap.Height;
ImageAttributesattributes=newImageAttributes();
ColorMatrixmatrix=newColorMatrix();
//创建淡入颜色矩阵
matrix.Matrix00=(float)0.0;
matrix.Matrix01=(float)0.0;
matrix.Matrix02=(float)0.0;
matrix.Matrix03=(float)0.0;
matrix.Matrix04=(float)0.0;
matrix.Matrix10=(float)0.0;
matrix.Matrix11=(float)0.0;
matrix.Matrix12=(float)0.0;
matrix.Matrix13=(float)0.0;
matrix.Matrix14=(float)0.0;
matrix.Matrix20=(float)0.0;
matrix.Matrix21=(float)0.0;
matrix.Matrix22=(float)0.0;
matrix.Matrix23=(float)0.0;
matrix.Matrix24=(float)0.0;
matrix.Matrix30=(float)0.0;
matrix.Matrix31=(float)0.0;
matrix.Matrix32=(float)0.0;
matrix.Matrix33=(float)0.0;
matrix.Matrix34=(float)0.0;
matrix.Matrix40=(float)0.0;
matrix.Matrix41=(float)0.0;
matrix.Matrix42=(float)0.0;
matrix.Matrix43=(float)0.0;
matrix.Matrix44=(float)0.0;
matrix.Matrix33=(float)1.0;
matrix.Matrix44=(float)1.0;
//从0到1进行修改色彩变换矩阵主对角线上的数值
//使三种基准色的饱和度渐增
Singlecount=(float)0.0;
while(count<1.0)
{
matrix.Matrix00=count;
matrix.Matrix11=count;
matrix.Matrix22=count;
matrix.Matrix33=count;
attributes.SetColorMatrix(matrix,ColorMatrixFlag.Default,ColorAdjustType.Bitmap);
g.DrawImage(MyBitmap,newRectangle(0,0,width,height),0,0,width,height,GraphicsUnit.Pixel,attributes);
System.Threading.Thread.Sleep(200);
count=(float)(count+0.02);
}
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message,"信息提示");
}
}
淡出效果代码如下:privatevoidbutton3_Click(objectsender,EventArgse)
{
//淡出显示图像
try
{
Graphicsg=this.panel1.CreateGraphics();
g.Clear(Color.Gray);
intwidth=MyBitmap.Width;
intheight=MyBitmap.Height;
ImageAttributesattributes=newImageAttributes();
ColorMatrixmatrix=newColorMatrix();
//创建淡出颜色矩阵
matrix.Matrix00=(float)0.0;
matrix.Matrix01=(float)0.0;
matrix.Matrix02=(float)0.0;
matrix.Matrix03=(float)0.0;
matrix.Matrix04=(float)0.0;
matrix.Matrix10=(float)0.0;
matrix.Matrix11=(float)0.0;
matrix.Matrix12=(float)0.0;
matrix.Matrix13=(float)0.0;
matrix.Matrix14=(float)0.0;
matrix.Matrix20=(float)0.0;
matrix.Matrix21=(float)0.0;
matrix.Matrix22=(float)0.0;
matrix.Matrix23=(float)0.0;
matrix.Matrix24=(float)0.0;
matrix.Matrix30=(float)0.0;
matrix.Matrix31=(float)0.0;
matrix.Matrix32=(float)0.0;
matrix.Matrix33=(float)0.0;
matrix.Matrix34=(float)0.0;
matrix.Matrix40=(float)0.0;
matrix.Matrix41=(float)0.0;
matrix.Matrix42=(float)0.0;
matrix.Matrix43=(float)0.0;
matrix.Matrix44=(float)0.0;
matrix.Matrix33=(float)1.0;
matrix.Matrix44=(float)1.0;
//从1到0进行修改色彩变换矩阵主对角线上的数值
//依次减少每种色彩分量
Singlecount=(float)1.0;
while(count>0.0)
{
matrix.Matrix00=(float)count;
matrix.Matrix11=(float)count;
matrix.Matrix22=(float)count;
matrix.Matrix33=(float)count;
attributes.SetColorMatrix(matrix,ColorMatrixFlag.Default,ColorAdjustType.Bitmap);
g.DrawImage(MyBitmap,newRectangle(0,0,width,height),0,0,width,height,GraphicsUnit.Pixel,attributes);
System.Threading.Thread.Sleep(20);
count=(float)(count-0.01);
}
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message,"信息提示");
}
}