- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
void __fastcall TForm1::FormPaint(TObject *Sender)
{
for(int i=0;i<2;i++)
{
if(!White[i].Moves)
{
int j=0;
for(int k=0;k<i;k++)
{
if(White[k].Position == White[i].Position)
{
j++;
}
}
Image1->Canvas->MoveTo(Points[White[i].Position-1].X-20,Points[White[i].Position-1].Y - 30*j);
Image1->Canvas->LineTo(Points[White[i].Position-1].X+20,Points[White[i].Position-1].Y - 30*j);
}
}
//Image1->Canvas->LineTo(200,200);
}
Этот обработчик грузит проц. на 50 процентов и таймер не работает из-за него.
Писал мой знакомый, который не любит продукты от борланда.
В чем дерьмо? Думаю видно невооруженным глазом.
guest 30.04.2010 21:23 # 0
fenryr 30.04.2010 21:30 # 0
guest 30.04.2010 21:38 # 0
guest 02.05.2010 23:30 # −1
guest 30.04.2010 22:02 # 0
guest 30.04.2010 22:03 # 0
guest 30.04.2010 22:03 # 0
fenryr 30.04.2010 22:09 # 0
и не имеет отношения к с++, тогда:
если убрать
Image1->Canvas->MoveTo(Points[White[i].Position-1].X-20,Points[White[i].Position-1].Y - 30*j);
Image1->Canvas->LineTo(Points[White[i].Position-1].X+20,Points[White[i].Position-1].Y - 30*j);
то все нормально будет
guest 30.04.2010 22:10 # 0
TarasB 30.04.2010 23:38 # 0
cfdev 01.05.2010 07:54 # 0
Dummy00001 04.05.2010 16:20 # +1
(Коррекция: Image1 скорее всего есть объект картинки который на форму кидается. В этом случае рисование в картинку может тоже WM_PAINT генерировать, т.к. Image в VCL не есть контрол и рисуется парент контролом, например самой формой.)
из-за убогости VCL реально быстро WM_PAINT обработать почти никогда не получается. VCL это все перекрывает и в процессе теряет маску перересовки: определить какую часть окна/контрола надо реально перерисовать невозможно - приходится рисовать все. мои знакомые не на одном проекты OnPaint() хакали (обработчик WM_PAINT) что бы быстро что-то перерисовывать (куча гамновой работы бо тогда VCLные штучки нельзя использовать и надо все ручками на WinAPI делать).
guest 02.05.2010 10:31 # 0
Image1->Canvas->MoveTo(Points[White[i].Position-1].X-20,Points[White[i].Position-1].Y - 30*j);
Image1->Canvas->LineTo(Points[White[i].Position-1].X+20,Points[White[i].Position-1].Y - 30*j);
Вызывается не сто тысяч раз, а лишь:
for(int i=0;i<2;i++)
Недолжно оно так тормозить.
guest 30.04.2010 22:12 # −1
guest 01.05.2010 12:58 # −1
guest 01.05.2010 13:01 # −1
guest 01.05.2010 13:10 # −2
guest 01.05.2010 14:05 # −2
guest 01.05.2010 08:17 # 0
cfdev 01.05.2010 08:52 # 0
даже в Майкрософте слышали
guest 01.05.2010 11:27 # 0
guest 01.05.2010 11:28 # 0
Гвозди Заржавелли 03.05.2010 13:11 # 0
guest 03.05.2010 13:16 # 0
HoBorogHuu_nemyx 02.01.2019 21:50 # +1
fenryr 01.05.2010 13:17 # −1
Image1->Canvas->LineTo(Points[White[i].Position-1].X+20,Points[White[i].Position-1].Y - 30*j);
идет отправка WM_PAINT окну и следовательно процедура вызывается FormPaint непрерывно.
Вот такая хрень.
cfdev 01.05.2010 13:59 # +1
TarasB 01.05.2010 22:04 # −1
fenryr 01.05.2010 13:30 # 0
private void Form1_Paint(object sender, PaintEventArgs e)
{
pictureBox1.CreateGraphics().DrawRectang le(Pens.Red, new Rectangle(10, 10, 50, 50));
}
так что наверное у борланда непродуманно в этом плане.
cfdev 01.05.2010 14:03 # 0
guest 01.05.2010 15:31 # −5
guest 01.05.2010 15:36 # +4
guest 01.05.2010 15:38 # −2
guest 01.05.2010 15:39 # −1
guest 01.05.2010 15:39 # 0
guest 01.05.2010 15:40 # 0
Убирайся с ресурса.
cfdev 01.05.2010 15:42 # 0
Ты входишь в 95%!
Алсо, срал я на праздник коммунистов.
guest 01.05.2010 15:45 # 0
cfdev 01.05.2010 15:46 # 0
Не путай с капитал-демократами типа США, тупое быдло.
guest 01.05.2010 16:45 # 0
А сам то со своими единоросами и фашистами.
guest 01.05.2010 17:22 # 0
cfdev 01.05.2010 18:29 # 0
И почему сразу политикан? В странах, где люди не скатываются в говно, это вполне в порядке вещей - иметь активную социальную позицию.
DanxilLs 03.05.2010 00:28 # +1
guest 01.05.2010 21:58 # 0
guest 01.05.2010 17:31 # 0
guest 01.05.2010 17:32 # 0
cfdev 01.05.2010 18:32 # 0
guest 01.05.2010 19:30 # 0
cfdev 01.05.2010 20:25 # 0
guest 01.05.2010 19:31 # 0
guest 01.05.2010 21:58 # +1
guest 01.05.2010 22:44 # 0
[url]http://vecherka.su/pics/uploads/archive2007/06_2007/04062007/02.jpg[/url]
PS: Руки в заде - для маскировки.
guest 01.05.2010 20:23 # 0
guest 02.05.2010 15:18 # −1
guest 04.05.2010 13:28 # 0
дело в этой строке ведь?
guest 04.05.2010 15:06 # 0
guest 05.05.2010 18:49 # 0
Камрад, жму руку.
nil 27.05.2010 10:22 # −1
jey-val-star 25.08.2021 04:25 # 0