ARTICLE AD BOX
I have been learning to use colormatrix lately - succesfully came with most of the code myself, it does something, but I have no idea if thats the right thing. I also have no idea what the last row in the matrix does. Does any of you have idea? Any help and/or further reading is appreciated. Thank you all in advance.
using System; using System.Drawing; using System.Drawing.Imaging; using System.Windows.Forms; namespace bitmaps { public partial class Matrix : Form { public Matrix(Bitmap btm) { InitializeComponent(); img = btm; main(); } Bitmap img; public float[][] matrix= { new float[] {1, 0, 0, 0, 0}, //R new float[] {0, 1, 0, 0, 0}, //G new float[] {0, 0, 1, 0, 0}, //B new float[] {0, 0, 0, 1, 0}, //Alpha new float[] {0, 0, 0, 0, 1} }; void main() { if (img == null) return; ImageAttributes imageAttributes = new ImageAttributes(); int w= img.Width; int h= img.Height; ColorMatrix colorMatrix = new ColorMatrix(matrix); imageAttributes.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap); Bitmap bmp = new Bitmap(w, h); using (Graphics grf = Graphics.FromImage(bmp)) { grf.DrawImage(img, new Rectangle(0, 0, w, h), 0, 0, w, h, GraphicsUnit.Pixel, imageAttributes); } if (this.BackgroundImage != null) { this.BackgroundImage.Dispose(); } this.BackgroundImage = bmp; } private void trackBar1_Scroll(object sender, EventArgs e) { matrix[0][0] = (float)trackBar1.Value / 100f; main(); } private void trackBar2_Scroll(object sender, EventArgs e) { matrix[1][0] = (float)trackBar2.Value / 100f; main(); } private void trackBar3_Scroll(object sender, EventArgs e) { matrix[2][0] = (float)trackBar3.Value / 100f; main(); } private void trackBar4_Scroll(object sender, EventArgs e) { matrix[3][0] = (float)trackBar4.Value / 100f; main(); } private void trackBar5_Scroll(object sender, EventArgs e) { matrix[0][1] = (float)trackBar5.Value / 100f; main(); } private void trackBar6_Scroll(object sender, EventArgs e) { matrix[1][1] = (float)trackBar6.Value / 100f; main(); } private void trackBar7_Scroll(object sender, EventArgs e) { matrix[2][1] = (float)trackBar7.Value / 100f; main(); } private void trackBar8_Scroll(object sender, EventArgs e) { matrix[3][1] = (float)trackBar8.Value / 100f; main(); } private void trackBar9_Scroll(object sender, EventArgs e) { matrix[0][2] = (float)trackBar9.Value / 100f; main(); } private void trackBar10_Scroll(object sender, EventArgs e) { matrix[1][2] = (float)trackBar10.Value / 100f; main(); } private void trackBar11_Scroll(object sender, EventArgs e) { matrix[2][2] = (float)trackBar11.Value / 100f; main(); } private void trackBar12_Scroll(object sender, EventArgs e) { matrix[3][2] = (float)trackBar12.Value / 100f; main(); } private void trackBar13_Scroll(object sender, EventArgs e) { matrix[4][0] = (float)trackBar13.Value / 100f; main(); } private void trackBar14_Scroll(object sender, EventArgs e) { matrix[4][1] = (float)trackBar14.Value / 100f; main(); } private void trackBar15_Scroll(object sender, EventArgs e) { matrix[4][2] = (float)trackBar15.Value / 100f; main(); } private void trackBar16_Scroll(object sender, EventArgs e) { matrix[4][3] = (float)trackBar16.Value / 100f; main(); } } }