Работа с BitmapData - C#

Узнай цену своей работы

Формулировка задачи:

пишу подобие Paint'а. В одном из обработчиков использую BitmapData. вроде все правильно, однако на код:
 int x1, x2, y1, y2;
 x1 = pst.X > pfn.X ? pfn.X : pst.X;
 x2 = pst.X < pfn.X ? pfn.X : pst.X;
 y1 = pst.Y > pfn.Y ? pfn.Y : pst.Y;
 y2 = pst.Y < pfn.Y ? pfn.Y : pst.Y;
 BitmapData bmpdt = (tpb.Image as Bitmap).LockBits(new Rectangle(x1, y1, x2 - x1, y2 - y1), ImageLockMode.ReadWrite, (tpb.Image as Bitmap).PixelFormat);
 byte[] bt = new byte[bmpdt.Stride * bmpdt.Height];
tpb - pictureBox pst- Point начало pfn - Point конец gtpb - Graphics для tpb выскакивает ошибка
************** Exception Text **************
System.ArgumentException: Parameter is not valid.
   at System.Drawing.Bitmap.LockBits(Rectangle rect, ImageLockMode flags, PixelFormat format, BitmapData bitmapData)
   at System.Drawing.Bitmap.LockBits(Rectangle rect, ImageLockMode flags, PixelFormat format)
или если можете предложите другой способ "зачистки" прямой линии соеденяющей точки pst и pfn.
gtpb.DrawLine(new Pen(Color.FromArgb(0), 1), pst, pfn);
почему-то не работает...
Нашел вариант
gtpb.Clear( Color.FromArgb(0,0,0,0));
 pfn = mea.Location;
 gtpb.DrawLine(Pens.Blue, pst, pfn);
 tpb.Invalidate();
Но это не совсем то что нужно, при работе линия мерцает. Можно ли от этого как либо избавиться?

Решение задачи: «Работа с BitmapData»

textual
Листинг программы
tpb.Invalidate();

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

Оцени полезность:

7   голосов , оценка 3.714 из 5