Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //*1
- //Это метод которым я рисую прямоугольник и присваиваю в Image.Source
- public static ImageSource DrawRectangleWpf(Bitmap bitmapImage, Point start, Point end)
- {
- Graphics g = Graphics.FromImage(bitmapImage);
- System.Drawing.Pen pen = new System.Drawing.Pen(borderColor, borderWidth);
- var startX = Convert.ToSingle(start.X);
- var startY = Convert.ToSingle(start.Y);
- var width = Convert.ToSingle(end.X - start.X);
- var height = Convert.ToSingle(end.Y - start.Y);
- g.DrawRectangle(pen, startX, startY, width, height);
- return ImageSourceFromBitmap(bitmapImage);
- }
- //Конверт с битмапа в Image который я использую для метода прямоугольника выше
- [DllImport("gdi32.dll", EntryPoint = "DeleteObject")]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool DeleteObject([In] IntPtr hObject);
- public static ImageSource ImageSourceFromBitmap(Bitmap bmp)
- {
- var handle = bmp.GetHbitmap();
- try
- {
- return Imaging.CreateBitmapSourceFromHBitmap(handle, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
- }
- finally { DeleteObject(handle); }
- }
- //Конверт с байт массива (который хранится в базе данных) в bitmap. Этот костыль мне нужен по той причине что после рисования прямоугольника - картинка становится bitmap и она после метода выше стает новых размеров, а следовательно все старые координаты становлятся невалидными (да, они мне нужны).
- public static Bitmap ByteToBitmap(byte[] imageData)
- {
- using (var ms = new MemoryStream(imageData))
- {
- return new Bitmap(ms);
- }
- }
- //*2
- //Непосредствено код загрузки в Image
- //Картинка которая должна загрузиться на 1 секунду
- Image.Source = DrawRectangleWpf(ByteToBitmap(_someEnityImagesCollection[i].SomeByteArrayPicture),
- StartPoint,
- EndPoint);
- //Загрузка следующей картинки кодом ниже (которую я все никак не могу логически отделить от загрузки выше)
- i++;
- Image.Source = ImageSourceFromBitmap(ByteToBitmap(_someEnityImagesCollection[i].SomeByteArrayPicture));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement