Я использую этот пользовательский метод для преобразования Bitmapsource в Bitmap:
public Bitmap BitmapFromSource(BitmapSource bitmapsource) {
using (MemoryStream outStream = new MemoryStream()) {
BitmapEncoder enc = new BmpBitmapEncoder();
enc.Frames.Add(BitmapFrame.Create(bitmapsource));
enc.Save(outStream);
using (var tempBitmap = new Bitmap(outStream)) {
return new Bitmap(tempBitmap);
} } }
этот метод вызывается несколько раз в моем коде, и он прекрасно работает.Но когда я вызываю его с помощью события щелчка мышью или события нажатия клавиши, я получаю, что обработчик содержит недопустимую ошибку.
Я понятия не имею, как поступить.Любое предложение?
В коде у меня есть список битовых фреймов:
List<BitmapFrame> myImages = new List<BitmapFrame>();
изначально метод работает, когда я показываю каждый кадр в несколько коробок с картинками:
var handler = new EventHandler(pictureBoxClick);
for (int i = 0; i < (decoder.Frames.Count); i++) {
var picture = new MyPictureBox {
Name = "pictureBoxFrame" + i,
Width = (int)newWidth,
Height = (int)newHeight,
SizeMode = PictureBoxSizeMode.Zoom,
Location= loc,
Image = BitmapFromSource(myImages[i]), };
Controls[i].Click += handler;
splitContainer1.Panel1.Controls.Add(picture);
}
затем, когда я нажимаю одну из этих коробок с картинками:
void pictureBoxClick (object sender , EventArgs e) {
var selectedPictureBox = (PictureBox)sender;
int idx = Controls.IndexOf(selectedPictureBox);
pictureBox1.Image = BitmapFromSource(myImages[idx]);
}
я получаю ошибку ...