Code: Select all
dc.DrawRectangle(rect.GetX()-1, rect.GetY()-1, rect.GetWidth()+2, rect.GetHeight()+2);
Code: Select all
dc.DrawRectangle(rect.GetX()-1, rect.GetY()-1, rect.GetWidth()+2, rect.GetHeight()+2);
Добавил обновления в пост выше, там подробнее описал проблему.... Скорее всего нужно копать в grid.DrawTextRectangle(dc, grid.GetCellValue(row, col), rect);borr_1 wrote:Ты уже код показать не хочешь?
У тебя должно идти первой строчкой.Code: Select all
dc.DrawRectangle(rect.GetX()-1, rect.GetY()-1, rect.GetWidth()+2, rect.GetHeight()+2);
Code: Select all
class MyGridCellRenderer : public wxGridCellStringRenderer
{
public:
virtual void Draw(wxGrid& grid,
wxGridCellAttr& attr,
wxDC& dc,
const wxRect& rect,
int row, int col,
bool isSelected)
{
dc.DrawRectangle(rect.GetX()-1, rect.GetY()-1, rect.GetWidth()+2, rect.GetHeight()+2);
wxPen left_pen = wxPen();
left_pen.SetColour(0, 0, 0);
left_pen.SetWidth(3);
dc.SetPen( left_pen );
wxRect myrect;
myrect.x = rect.x + 8;
myrect.y = rect.y + 2;
dc.DrawLine( rect.x, rect.y, rect.x, rect.y + rect.height-1);
dc.SetBackgroundMode( wxTRANSPARENT );
dc.SetTextForeground( grid.GetCellTextColour(0,0) );
dc.SetFont( grid.GetCellFont(0,0) );
dc.DrawText(grid.GetCellValue(row, col), rect.GetX()+5, rect.GetY());
}
};
};
Заработало )) Правда терь выравнивание в ячейке по вертикали и по горизонтали через m_grid1->SetCellAlignment(); не работает, но как я понимаю, если текст рисуется через рендерер, то и выравнивать придется через рендерер и соответственно цвета шрифта и фона тоже через рендерер придется устанавливать......borr_1 wrote:У меня все нормально рисуется что тебе мешает я понять не могу смотри ячейка 0, 0. С кодом который в последний раз привел.
Code: Select all
grid.DrawTextRectangle(dc, grid.GetCellValue(row, col),
myrect, wxALIGN_LEFT); // ну или wxALIGN_CENTER
Рисую еще одно пиво на мониторе.Спасибо borr_1 ты настоящий друг Smile)
С меня пивоborr_1 wrote:Тебе мед еще и ложкуЭто вместо dc.DrawText у меня работаетCode: Select all
grid.DrawTextRectangle(dc, grid.GetCellValue(row, col), myrect, wxALIGN_LEFT); // ну или wxALIGN_CENTER
Рисую еще одно пиво на мониторе.Спасибо borr_1 ты настоящий друг Smile)
Code: Select all
class MyGridCellRenderer : public wxGridCellStringRenderer
{
public:
virtual void Draw(wxGrid& grid, wxGridCellAttr& attr, wxDC& dc, const wxRect& rect, int row, int col, bool isSelected)
{
//////////////////////////////////////////////////////////////////////////////
wxGridCellStringRenderer::Draw(grid, attr, dc, rect, row, col, isSelected); //
//////////////////////////////////////////////////////////////////////////////
dc.DrawRectangle(rect.GetX()-1, rect.GetY()-1, rect.GetWidth()+2, rect.GetHeight()+2);
wxPen left_pen = wxPen();
left_pen.SetColour(0, 0, 0);
left_pen.SetWidth(3);
dc.SetPen( left_pen );
dc.DrawLine( rect.x, rect.y, rect.x, rect.y + rect.height-1);
dc.SetBackgroundMode( wxTRANSPARENT );
dc.SetTextForeground( grid.GetCellTextColour(row, col) );
dc.SetFont( grid.GetCellFont(row, col) );
dc.DrawText(grid.GetCellValue(row, col), rect.GetX()+8, rect.GetY()+2);
//grid.DrawTextRectangle(dc, grid.GetCellValue(row, col), myrect, wxALIGN_LEFT);
}
};
А параметры myrect какие установил?borr_1 wrote:Тебе мед еще и ложкуЭто вместо dc.DrawText у меня работаетCode: Select all
grid.DrawTextRectangle(dc, grid.GetCellValue(row, col), myrect, wxALIGN_LEFT); // ну или wxALIGN_CENTER
Code: Select all
wxRect myrect = rect;
myrect.x = rect.x + 8;
myrect.y = rect.y + 2;
без myrect.width и myrect.height, DrawTextRectangle не работает.borr_1 wrote:Code: Select all
wxRect myrect = rect; myrect.x = rect.x + 8; myrect.y = rect.y + 2;
Давит не то слово, убивает....borr_1 wrote:Вас там жара тоже походу давит.Mojo wrote: без myrect.width и myrect.height, DrawTextRectangle не работает.