2019年11月26日 星期二

調整Picturebox圖片的透明度

先建立Picturebox1和Picturebox2和滑桿物件Trackbox1           
為了不破壞原圖達成順利調整透明度,才建立第2個(不顯示),方便作業
透明度為-255 ~ +255

           Bitmap BMP = new Bitmap(pictureBox2.Image);
            int brightness = trackBar1.Value;       //抓滑桿的值

            for(int y = 0; y < BMP.Height; y++)
            {
                for(int x = 0; x < BMP.Width; x++)
                {
                    var pixel = BMP.GetPixel(x, y);         //取得圖片的pixel資訊

                    var pixelR = ((pixel.R + brightness > 255) ? 255 : (pixel.R + brightness)) < 0 ? 0 : ((pixel.R + brightness > 255) ? 255 : (pixel.R + brightness));
                    var pixelG = ((pixel.G + brightness > 255) ? 255 : (pixel.G + brightness)) < 0 ? 0 : ((pixel.G + brightness > 255) ? 255 : (pixel.G + brightness));
                    var pixelB = ((pixel.B + brightness > 255) ? 255 : (pixel.B + brightness)) < 0 ? 0 : ((pixel.B + brightness > 255) ? 255 : (pixel.B + brightness));

                    Color newColor = Color.FromArgb(pixel.A, pixelR, pixelG, pixelB);   //把這個pixel的修改後資訊寫回
                    BMP.SetPixel(x, y, newColor);
                }
            }

            pictureBox1.Image = BMP;

先建立個bitmap物件處理,抓取pixel資訊將RGB資訊計算出來
若超過255則設為255,若低於0則設為0
再把計算結果放到picturebox1

設定一個先存入原圖避免每次picturebox1的圖每次更動每次都被破壞數值,暫存使用

沒有留言:

張貼留言