■ サンプル
コントローラ
* button x 1 * trackBar x 1 * pictureBox x 1
コード
using System; using System.Drawing; using System.Drawing.Imaging; using System.Windows.Forms; namespace SampleForm { public partial class Form1 : Form { private Image sourceImage; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { this.sourceImage = this.pictureBox1.Image; } private void button1_Click(object sender, EventArgs e) { this.pictureBox1.Image = AdjustContrast(this.sourceImage, this.trackBar1.Value); } /// <summary> /// コントラスト変更 /// </summary> /// <param name="targetImage">基画像</param> /// <param name="contrast">コントラストの値(-100~100)</param> /// <returns>コントラスト変更後の画像</returns> private static Bitmap AdjustContrast(Image targetImage, float contrast) { //コントラストを変更した画像の描画先となるImageオブジェクトを作成 var newImage = new Bitmap(targetImage.Width, targetImage.Height); // Graphicsオブジェクトを取得 using (var graphics = Graphics.FromImage(newImage)) { // ColorMatrixオブジェクトの作成 float scale = (100f + contrast) / 100f; scale *= scale; float append = 0.5f * (1f - scale); var colorMatrix = new ColorMatrix(new float[][] { new float[] {scale, 0, 0, 0, 0}, new float[] {0, scale, 0, 0, 0}, new float[] {0, 0, scale, 0, 0}, new float[] {0, 0, 0, 1, 0}, new float[] {append, append, append, 0, 1} }); // ImageAttributesオブジェクトの作成 var imageAttributes = new ImageAttributes(); // ColorMatrixを設定する imageAttributes.SetColorMatrix(colorMatrix); // ImageAttributesを使用して描画 graphics.DrawImage(targetImage, new Rectangle(0, 0, targetImage.Width, targetImage.Height), 0, 0, targetImage.Width, targetImage.Height, GraphicsUnit.Pixel, imageAttributes); } return newImage; } } }
参考文献
https://dobon.net/vb/dotnet/graphics/contrast.htmlhttp://www.84kure.com/blog/2014/12/03/c-%E7%94%BB%E5%83%8F%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%88%E3%83%A9%E3%82%B9%E3%83%88%E3%82%92%E8%AA%BF%E6%95%B4%E3%81%99%E3%82%8B/
関連記事
画像処理
画像処理 ~ 輝度変更 (明るさ) ~https://blogs.yahoo.co.jp/dk521123/37844934.html
画像処理 ~ シャープネス ~
https://blogs.yahoo.co.jp/dk521123/37837353.html
画像処理 ~ 回転 ~
https://blogs.yahoo.co.jp/dk521123/37853430.html
画像処理 ~ アフィン変換 ~
https://blogs.yahoo.co.jp/dk521123/38061211.html
その他
PictureBox ~画像を表示する~https://blogs.yahoo.co.jp/dk521123/23504075.html
PictureBox [7] ~ 画像をコピーする ~
https://blogs.yahoo.co.jp/dk521123/37857445.html
【C#】Graphics ~ 図形の描画 ~
https://blogs.yahoo.co.jp/dk521123/32877749.html