Witam,
dodałem obrazek który ma tło przezroczyste, kolor podstawowy: czerwony.
Dodałem również suwak: trackBar i chciałbym, aby przesuwanie suwaka z czerwonego szło ku zielonemu.
Dodam, że obrazek ma nieregularne kształty.
Wygooglałem, coś takiego i naniosłem drobne modyfikacje:
public static Bitmap MakeGrayscale3(Bitmap original, double R, double G, double B)
{
//create a blank bitmap the same size as original
Bitmap newBitmap = new Bitmap(original.Width, original.Height);
//get a graphics object from the new image
Graphics g = Graphics.FromImage(newBitmap);
//create the grayscale ColorMatrix
ColorMatrix colorMatrix = new ColorMatrix(
new float[][]
{
new float[] {(float)R, 0, 0, 0, 0},
new float[] {0, (float)G, 0, 0, 0},
new float[] {0, 0, (float)B, 0, 0},
new float[] {0, 0, 0, 1, 0},
new float[] {0, 0, 0, 0, 1}
});
//create some image attributes
ImageAttributes attributes = new ImageAttributes();
//set the color matrix attribute
attributes.SetColorMatrix(colorMatrix);
//draw the original image on the new image
//using the grayscale color matrix
g.DrawImage(original, new Rectangle(0, 0, original.Width, original.Height),
0, 0, original.Width, original.Height, GraphicsUnit.Pixel, attributes);
//dispose the Graphics object
g.Dispose();
return newBitmap;
}
Tylko niestety nie bardzo spełnia moje oczekiwania gdyż wartości R G B są przemnażane a więc każde posunięcie suwaka mnoży mi wartość. Chciałbym zrobić tak by przesuwając w prawo będzie mi się kolor zmieniał na zielony a jak uzyskam zielony i zacznę przesuwać w lewo to będziemy uzyskiwać kolor czerwony.
Prosiłbym o pomoc bo już siedzę trochę przy tym i coraz mniej wiem jak to zrobić :/