|
以淡入淡出显示图像效果显示图像主要使用了ImageAttributes类的SetColorMatrix方法设置颜色调整矩阵实现淡入淡出的效果。ImageAttributes对象维护多个颜色调整设置,包括颜色调整矩阵、灰度调整矩阵、灰度校正值、颜色映射表和颜色阈值。呈现过程中,可以对颜色进行校正、调暗、调亮和移除。 淡入效果代码如下:
private void button1_Click(object sender, EventArgs e) { //淡入显示图像 try { Graphics g = this.panel1.CreateGraphics(); g.Clear(Color.Gray); int width = MyBitmap.Width; int height = MyBitmap.Height; ImageAttributes attributes = new ImageAttributes(); ColorMatrix matrix = new ColorMatrix(); //创建淡入颜色矩阵 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进行修改色彩变换矩阵主对角线上的数值 //使三种基准色的饱和度渐增 Single count = (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, new Rectangle(0, 0, width, height), 0, 0, width, height, GraphicsUnit.Pixel, attributes); System.Threading.Thread.Sleep(200); count = (float)(count + 0.02); } } catch (Exception ex) { MessageBox.Show(ex.Message, "信息提示"); } } | 淡出效果代码如下:private void button3_Click(object sender, EventArgs e) { //淡出显示图像 try { Graphics g = this.panel1.CreateGraphics(); g.Clear(Color.Gray); int width = MyBitmap.Width; int height = MyBitmap.Height; ImageAttributes attributes = new ImageAttributes(); ColorMatrix matrix = new ColorMatrix(); //创建淡出颜色矩阵 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进行修改色彩变换矩阵主对角线上的数值 //依次减少每种色彩分量 Single count = (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, new Rectangle(0, 0, width, height), 0, 0, width, height, GraphicsUnit.Pixel, attributes); System.Threading.Thread.Sleep(20); count = (float)(count - 0.01); } } catch (Exception ex) { MessageBox.Show(ex.Message, "信息提示"); } } |
|