我可以通过指定行格式或列格式来着色单元格,但是将着色/格式应用于整个行或列。我想根据一些标准设置每个单元格的颜色。当我在setCDKMatrixCell()
调用中包含...着色标记时,这些字符将设置为不用于格式化单元格的单元格文本。
还有其他方法吗?或者有关如何修改drawCDKMatrixCell的任何想法吗?
void drawCDKMatrixCell() {
...
if (matrix->dominant == ROW) {
highlight = matrix->rowtitle[absolute_row][0] & A_ATTRIBUTES;
}
else if (matrix->dominant == COL) {
highlight = matrix->coltitle[col][0] & A_ATTRIBUTES;
}
/* Draw in the cell info. */
for (x = 1; x <= matrix->colwidths[col]; x++) {
chtype ch = (((x <= infolen) && !isHiddenDisplayType(disptype))
? (CharOf(MATRIX_INFO(matrix, vrow, vcol)[x - 1]) | highlight)
: matrix->filler);
(void) mvwaddch(cell, 1, x, ch | highlight);
}
...
答案 0 :(得分:1)
使用私有函数
绘制单元格static void drawCDKMatrixCell (CDKMATRIX *matrix,
int row,
int col,
int vrow,
int vcol,
chtype attr,
boolean Box)
只对单元格中的每个字符使用mvwaddch
。其信息使用
int setCDKMatrixCell (CDKMATRIX *matrix, int row, int col, const char *value)
并以char
(不是chtype
)的形式存储在矩阵中。如果修改了drawCDKMatrixCell
函数,比如使用char2Chtype
来构建数据,那么您可以执行您要求的操作。