Наши преимущества

С++ Builder

  • Автор темы Gabbahard
  • Дата начала
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;
}

}
 
Smart sys, используй поиск по сайту. Если ничего нет - иди в раздел "Заказы". И что за дикий оффтоп? Штраф за него, соотвественно.
 
Последнее редактирование модератором:
В свое время решал эту проблему вот так:
Код:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    TControlStyle st = StringGrid1.ControlStyle;
    st << csOpaque;
    StringGrid1.ControlStyle = st;
}
 
Gabbahard, почитай всякие там FAQ - думаю там этот вопрос рассмотрен. Просто я с такой же проблемой встретился в Делфи и решил ее в одном из факов. Удачи!!!
 
Верх