jml
jml

Reputation: 1806

how to account for linewidth in drawing lines within a bounding box

I am drawing a set of evenly spaced horizontal lines within the entirety of a bounding box.

The problem I am having is that the lines (when larger than 1px) get drawn beyond the top and bottom edges of my bounds. Half on each side of the top and bottom is missing, to be precise.

Here is some pseudo code that attempts a fix for this, but it didn't work. It should describe what I am trying to do:

var halfline = linewidth / 2.;
var maxheight = boxsize.height - halfline;
var minheight = halfline;

//draw h lines    
for(i = 0; i < maxlines; i++)
{
    var xloc = 0;
    var xfrac = i / maxlines - 1;
    var yloc = (xfrac * boxsize.height) + minheight;

    move_to(xloc, yloc);
    line_to(boxsize.width, yloc);
}

Please keep in mind that the lang is not important here, just the idea of how to offset and scale the lines (that are drawn within the for loop) properly.

Thanks for any tips... It's safe to assume the following:

  1. the line width is in pixels

  2. the coordinate system is pixel-based, from (0,0) to (n,n)

Upvotes: 0

Views: 98

Answers (1)

Beta
Beta

Reputation: 99114

Your question is a little unclear, but I think this might help:

var availablespace = boxsize.height - linewidth;
...
var yloc = (xfrac * availablespace) + minheight;

Upvotes: 1

Related Questions