Witam.
Zależy mi na wykadrowaniu z jednej bitmapy danego jej wycinka o danych współrzędnych i wklejeniu jej do drugiej bitmapy o wymiarach tego wykadrowanego materiału. Chciałbym wykonać to przy uzyciu wskaźników, poniważ dostęp bezpośredni poprzez GetPixel, SetPixel jest za wolny. Udaje mi sie pobrać barwę danego piskela z bitmapy bmp,bądź ja zmodyfikować, ale nie wiem jak ją potem zapisać do bitmapy docelowej bmp2. Bitmapa bmp jest juz wczesniej zadeklarowana i zainicjowana. Proszę o pomoc lub ewentualną drobną modyfikację kodu. Pozdrawiam

const int PixelSize = 3;

Point point_poczatek = new Point(30, 30);

Size rozm = new Size();

rozm.Width = 30;

rozm.Height = 30;

bmp2 = new Bitmap(30,30);                                                                             //Tworzenie drugiej bitmapy o wymiarze kadru

Rectangle bitmapBounds = new Rectangle(point_poczatek, rozm);

Rectangle bitmapBounds2 = new Rectangle(Point.Empty, bmp2.Size);                                                                                //?

BitmapData bitmapData = bmp.LockBits(bitmapBounds, ImageLockMode.ReadWrite, bmp.PixelFormat);

BitmapData bitmapData2 = bmp2.LockBits(bitmapBounds2, ImageLockMode.ReadWrite, bmp2.PixelFormat);           //?

unsafe

{

for (int y = 0; y < bitmapData.Height; y++)

{

byte* row = (byte*)bitmapData.Scan0.ToPointer() + (y * bitmapData.Stride);

byte* row2 = (byte*)bitmapData.Scan0.ToPointer() + (y * bitmapData.Stride + 1);

byte* row3 = (byte*)bitmapData.Scan0.ToPointer() + (y * bitmapData.Stride) + 2;


byte* row_ = (byte*)bitmapData2.Scan0.ToPointer() + (y * bitmapData2.Stride);                              //?

byte* row2_ = (byte*)bitmapData2.Scan0.ToPointer() + (y * bitmapData2.Stride + 1);                        //?

byte* row3_ = (byte*)bitmapData2.Scan0.ToPointer() + (y * bitmapData2.Stride) + 2;                        //?


for (int x = 0; x < bitmapData.Width; x++)

{

byte niebieski= row[x *PixelSize];

byte zielony =row2[x * PixelSize];

byte czerwony=row3[x * PixelSize];

row_[x * PixelSize] = niebieski;                     //Tu prawdopodobnie podstawianie jest błędne

row2_[x * PixelSize] = zielony;                     //Tu prawdopodobnie podstawianie jest błędne


row3_[x * PixelSize] = czerwony;                 //Tu prawdopodobnie podstawianie jest błędne

}

}

}

bmp.UnlockBits(bitmapData);

bmp2.UnlockBits(bitmapData2);