Работа с BitmapData - C#
Формулировка задачи:
пишу подобие Paint'а. В одном из обработчиков использую BitmapData. вроде все правильно, однако на код:
tpb - pictureBox
pst- Point начало
pfn - Point конец
gtpb - Graphics для tpb
выскакивает ошибка
почему-то не работает...
Но это не совсем то что нужно, при работе линия мерцает.
Можно ли от этого как либо избавиться?
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];
************** 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();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д