G
Gabbahard
Гость
Не наодном из форумов немогут дать нормальный ответ по работе с канвой.
Как избавиться от мерцания ?
код след:
void __fastcall TMainForm::StringGrid1DrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect, TGridDrawState State)
{
div_t x;
x = div(j1,StringGrid1->ColCount);
StringGrid1->RowCount = x.quot+1;
div_t wx;
wx = div(MainForm->Width-201,150);
//StringGrid1->ColCount = wx.quot;
int X=0,Y=0,i=0;
//n = StringGrid1->ColCount * StringGrid1->TopRow; //От какого
//n=(StringGrid1->ColCount * x.quot) + (StringGrid1->ColCount * StringGrid1->TopRow); // До какого
for (int u=StringGrid1->ColCount * StringGrid1->TopRow;u<(((MainForm->Height - 123) / 150)+ StringGrid1->TopRow)* (StringGrid1->ColCount);u++)
{
if(u==j1) break;
Graphics::TBitmap *pBitmap = new Graphics::TBitmap();
try
{
TJPEGImage *jp = new TJPEGImage();
//ShowMessage(tot);
jp->LoadFromFile(tot);
jp->Scale = jsQuarter;
pBitmap->Assign(jp);
delete jp;
pBitmap->Width = 148;
pBitmap->Height = 148;
pBitmap->Modified = false;
}
catch (...)
{
ShowError(tot);
}
StringGrid1->Canvas->Draw(X+i+1,Y+1,pBitmap);
// StringGrid1->Canvas->TextOut(X+i+5,Y+82,id);
i++;
if(i<wx.quot)X=X+150;
else
{X=0;Y=Y+150;i=0;}
delete pBitmap;
}
}
Как избавиться от мерцания ?
код след:
void __fastcall TMainForm::StringGrid1DrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect, TGridDrawState State)
{
div_t x;
x = div(j1,StringGrid1->ColCount);
StringGrid1->RowCount = x.quot+1;
div_t wx;
wx = div(MainForm->Width-201,150);
//StringGrid1->ColCount = wx.quot;
int X=0,Y=0,i=0;
//n = StringGrid1->ColCount * StringGrid1->TopRow; //От какого
//n=(StringGrid1->ColCount * x.quot) + (StringGrid1->ColCount * StringGrid1->TopRow); // До какого
for (int u=StringGrid1->ColCount * StringGrid1->TopRow;u<(((MainForm->Height - 123) / 150)+ StringGrid1->TopRow)* (StringGrid1->ColCount);u++)
{
if(u==j1) break;
Graphics::TBitmap *pBitmap = new Graphics::TBitmap();
try
{
TJPEGImage *jp = new TJPEGImage();
//ShowMessage(tot);
jp->LoadFromFile(tot);
jp->Scale = jsQuarter;
pBitmap->Assign(jp);
delete jp;
pBitmap->Width = 148;
pBitmap->Height = 148;
pBitmap->Modified = false;
}
catch (...)
{
ShowError(tot);
}
StringGrid1->Canvas->Draw(X+i+1,Y+1,pBitmap);
// StringGrid1->Canvas->TextOut(X+i+5,Y+82,id);
i++;
if(i<wx.quot)X=X+150;
else
{X=0;Y=Y+150;i=0;}
delete pBitmap;
}
}