Найдено результатов: 2

Ошибка отсечения чертежа .Net

Функция GDI+ DrawLines имеет ошибку отсечения, которую можно воспроизвести, выполнив следующий код c#. При выполнении кода появляются два пути строк, которые должны быть идентичными, потому что оба они находятся внутри области отсечения. Но когда область отсечения установлена, один из сегментов линии не рисуется.

protected override void OnPaint(PaintEventArgs e)
{
   PointF[] points = new PointF[] { new PointF(73.36f, 196), 
             new PointF(75.44f, 32), 
             new PointF(77.52f, 32), 
             new PointF(79.6f, 196), 
             new PointF(85.84f, 196) };

   Rectangle b = new Rectangle(70, 32, 20, 164);         
   e.Graphics.SetClip(b);
   e.Graphics.DrawLines(Pens.Red, points); // clipped incorrectly
   e.Graphics.TranslateTransform(80, 0);
   e.Graphics.ResetClip();
   e.Graphics.DrawLines(Pens.Red, points);
 }

Установка режима антиали на графическом объекте решает эту проблему. Но это не настоящее решение.

Кто-нибудь знает обходной путь?

winforms   graphics   gdi+   system.drawing    

498   3   09:18, 4th August, 2020


Как сделать так, чтобы PictureBox использовало пересчет ближайших соседей?

Я использую StretchImage, потому что коробка может быть изменена с помощью сплиттеров. Похоже, что по умолчанию используется какая-то гладкая билинейная фильтрация, в результате чего мое изображение становится размытым и имеет муаровые узоры.

c#   .net   winforms   gdi+   picturebox    

477   4   22:18, 17th August, 2020