scanline nic nie wyświetla na obrazku

0

Próbuję skopiować jeden obrazek wielokrotnie na drugą bitmapę i nic mi nie wyświetla. Dlaczego?

 //rysowanie zgaszonych
                    for (int y = 0; y < wysokosc; y++)
                        for (int x = 0; x < szerokosc; x++)
                        {
                            for (int y1 = 0; y1 < bmpdark.Height; y1++)
                                for (int x1 = 0; x1 < bmpdark.Width; x1++)
                                {
                                    byte bb = *(ptrDataDark + (y1 * bmpDataDark.Stride) + (x1 * 3));
                                    byte gg = *(ptrDataDark + (y1 * bmpDataDark.Stride) + (x1 * 3 + 1));
                                    byte rr = *(ptrDataDark + (y1 * bmpDataDark.Stride) + (x1 * 3 + 2));

                                    *(ptrData + ((2 + y * diodeSpacing) * bmpData.Stride) + ((2 + x * diodeSpacing) * 3)) = bb;
                                    *(ptrData + ((2 + y * diodeSpacing) * bmpData.Stride) + ((2 + x * diodeSpacing) * 3 + 1)) = gg;
                                    *(ptrData + ((2 + y * diodeSpacing) * bmpData.Stride) + ((2 + x * diodeSpacing) * 3 + 2)) = rr;


                                }
                        }
 bmpdark.UnlockBits(bmpDataDark);
 bmplight.UnlockBits(bmpDataLight);
 bmp.UnlockBits(bmpData);  

 e.Graphics.DrawImage(bmp, 0, 0);
1
                    for (int y = 0; y < wysokosc; y++)
                        for (int x = 0; x < szerokosc; x++)
                        {
                            for (int y1 = 0; y1 < bmpdark.Height; y1++)
                                for (int x1 = 0; x1 < bmpdark.Width; x1++)
                                {

Zastanów się co te pętle robią, a co mają robić.

Hint: wystarczą dwie pętle.

1

byte bb = *(ptrDataDark + (y1 * bmpDataDark.Stride) + (x1 * 3));

wskaźniki można indeksować.

byte bb = ptrDataDark[y1 * bmpDataDark.Stride + x1*3];

1 użytkowników online, w tym zalogowanych: 0, gości: 1