A nice way to do this is to use copulae.
In your case:
let $X \sim \text{Triangular}(0,1)$ with pdf $f(x)$ and parameter $b$, and
let $Y \sim \text{Triangular}(0,1)$ with pdf $g(y)$ and parameter $c$:

with cdf's $F(x)$ and $G(y)$:

... where I am using the Prob
function (from the mathStatica package for Mathematica) to automate the nitty-gritties of the cdf calculation.
Then, define a copula function, which is a function of the two cdf's $F$ and $G$ that creates a bivariate joint distribution function (cdf) from $F$ and $G$, such that the marginal pdf's of $X$ and $Y$ are still $f$ and $g$ respectively. Here, I use a Morgenstern copula with parameter $\alpha$ that induces correlation (there are many many other Copula functions available):

Let $h(x,y)$ denote the bivariate Triangular joint pdf obtained via a Morgenstern copula. Here we differentiate the Copula function (joint cdf) to derive the joint pdf $h(x,y)$:

The following diagram plots the joint pdf $h(x,y)$ when $b = \frac12$, $c = \frac34$ and $\alpha = 0$ (independent):

Here is the same plot when $\alpha = -1$:
