В моём приложении несколько битмапов и всё они большого разрешения. При использовании getpixel/setpixel, приложение лагает. Можно ли как-то ускорить либо заменить эти методы. В инете много инфы на эту тему, но так и не нашёл понятного для меня способа? Читал про Lockbitmap, нашёл класс, который его использует. Вроде как правильно подключил, но изменений не увидел. Может кто-то подробно объяснить, как я могу ускорить getpixel/setpixel в моём проекте?
public static Bitmap myBitmap = new Bitmap("img\\BigMap.png");
public static Bitmap myBitmapScale1 = new Bitmap("img\\BigMap.png");
public static Bitmap myBitmapScale2 = new Bitmap("img\\BigMapScale2.png");
public void pictureBox1_Click(object sender, EventArgs e)
{
//получение цвета нажатого пикселя
MouseEventArgs rato = e as MouseEventArgs;
int x = rato.X * myBitmap.Width / pictureBox1.ClientSize.Width;
int y = rato.Y * myBitmap.Height / pictureBox1.ClientSize.Height;
Color backColor = myBitmap.GetPixel(x, y);
string hex = backColor.R.ToString("X2") + backColor.G.ToString("X2") + backColor.B.ToString("X2");
}
private void darkmode_Click(object sender, EventArgs e)
{
for (var x = 0; x < myBitmap.Width; x++)
for (var y = 0; y < myBitmap.Height; y++)
{
var pixel = myBitmap.GetPixel(x, y);
if (pixel.R == 176 && pixel.G == 244 && pixel.B == 254)
myBitmap.SetPixel(x, y, Color.DarkGray);
}
}