Как рисовать линии на изображении? - PullRequest
0 голосов
/ 19 мая 2018

Есть такой скрипт (он рисует треугольник в заданных координатах и ​​вставляет его в изображение) -

int[] xPoints = new int[] { Convert.ToInt32(AX), Convert.ToInt32(BX), Convert.ToInt32(CX) };      
int[] yPoints = new int[] { Convert.ToInt32(AY), Convert.ToInt32(BY), Convert.ToInt32(CY) };

int xMin = 0;
int yMin = 0;
if(xPoints.Min() < 0)
{
    xMin = xPoints.Min();
}
if(yPoints.Min() < 0)
{
    yMin = yPoints.Min();
}

int height = (yPoints.Max() + (-yMin)) * 100;
int width = (xPoints.Max() + (-xMin)) * 100;//I set the boundaries and increase the size of the image (that would not be 6x3 pixels)

Image myImage = new Image();

DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();
drawingContext.DrawLine(new Pen(Brushes.Green, 1), new Point(CX, CY  ), new Point(BX  , BY  ));
drawingContext.DrawLine(new Pen(Brushes.Black, 1), new Point(CX, CY  ), new Point(AX  , AY  ));
drawingContext.DrawLine(new Pen(Brushes.Red, 1), new Point(AX * 300, AY * 300), new Point(BX * 300, BY * 300));


drawingContext.Close();

RenderTargetBitmap bmp = new RenderTargetBitmap(width, height, 100, 100, PixelFormats.Pbgra32);
bmp.Render(drawingVisual);
myImage.Source = bmp;

MainCanvas.Children.Add(myImage);

using (FileStream stream = new FileStream("Sample.png", FileMode.Create))
{
    PngBitmapEncoder encoder = new PngBitmapEncoder();
    encoder.Frames.Add(BitmapFrame.Create(bmp));
    encoder.Save(stream);
}

Я рисую линии, и вот что получается -

problem triangle

Почему это происходит?Что необходимо умножить x, y (при создании точки), чтобы треугольник точно вписался в его границы?И это будет универсально, то есть, если я изменю координаты, все тоже будет работать нормально.Кроме того, линия CB не проведена.Я подозреваю, что это связано с тем, что именно на границе изображения.Если я сделаю кисть неограниченного размера (2000), то эта линия будет занимать все изображение, а если меньше, то она вообще не рисуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...