Tylko widoczna część PictureBox

0

Cześć. Mam dwa PictureBoxy. Jeden większy(A) i drugi mniejszy(B).

Ten większy pokazuje obraz z kamery.
Obydwa są kwadratowe i obydwa mają SizeMode ustawione na CenterImage. W związku z czym w A część obrazu jest niewidoczna. I jeśli zrobię:

 
  picB.Image = resizeImg(picA.Image); //funkcja resizeImg odpowiednio skaluje obraz

a następnie zapiszę obraz z picB do pliku, to widzę dużo więcej niż normalnie w picB. Mam nadzieję, że wiecie o co chodzi. Więc pytanie moje takie - jak wydobyć z PictureBox tylko widoczną dla użytkownika część obrazu? Czy jedyną metodą jest Graphics.CopyFromScreen, czy można jakoś inaczej?

0

OK, już se poradziłem.
Jeśli pictureBox ma właściwość SizeMode na centerImage to znaczy, że pictureBox jest tak jakby na środku obrazka. W związku z tym wystarczy dokonać prostego obliczenia:

bmp.Clone(new Rectangle((bmp.Width - pictureBox.Width) / 2, (bmp.Height - pictureBox.Height)/2, pictureBox.Width, pictureBox.Height), System.Drawing.Imaging.PixelFormat.DontCare), new Size(200, 200));
 

gdzie bmp to obraz, który znajdzie się na PictureBox.

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