Я работаю с Graphviz API, Visual C ++.Прежде чем я вызову gvLayout для вычисления координат узла, я должен установить ширину и высоту узла (для каждого узла в графике).Проблема в том, что ND_width и ND_height макроподход, похоже, не оказывает влияния, хотя установка тех же значений с помощью agsafeset работает, как и ожидалось.Я просто не хочу использовать строковые API, такие как agsafeset , потому что я обрабатываю кучу узлов в цикле и предпочитаю устанавливать значения ширины и высоты с помощью ND_width (pNode) и ND_height (pNode) (или непосредственно как pNode-> u.width и pNode-> u.height ).Что я делаю не так?
Следующий код не работает (не оказывает никакого влияния):
const DWORD dwPixelsPerInch = 96;
ND_width(pGvzNode) = (double)dwWidthInPixels / dwPixelsPerInch;
ND_height(pGvzNode) = (double)dwHeightInPixels / dwPixelsPerInch;
Пока работает следующий код:
CStringA csaValue;
csaValue.Format("%f", (double)dwWidthInPixels / dwPixelsPerInch);
agsafeset(pGvzNode, "width", csaValue.GetBuffer(), "");
csaValue.Format("%f", (double)dwHeightInPixels / dwPixelsPerInch);
agsafeset(pGvzNode, "height", csaValue.GetBuffer(), "");
PS:Я использую Graphviz исключительно для разметки, я делаю пользовательский рендеринг, поэтому все, что мне нужно, это вычисление координат узлов и ребер (в пикселях) с учетом ширины и высоты узлов (в пикселях).Я устанавливаю эти значения непосредственно перед вызовом gvLayout (для «точки»).Я устанавливаю agsafeset (pGvzNode, "fixedsize", "1", "") .