Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с графикой [D7]


Expl ©   (2004-11-03 20:06:00) 

Объясните пжлста ламеру в чем причина: суть в том, что при нажатии на  кнопку на PaintBox'e выводится таблица 5*5 с числами в клетках. Когда прорисовываю просто таблицу, то она сразу отображается, а когда после ее прорисовки ставлю прорисовку чисел, то при нажатии таблица появляется и мгновенно исчезает. В чем тут сёка?


Mihey_temporary   (2004-11-03 21:04:00) [1]

Ну вот и слава богу.


Expl   (2004-11-03 20:31:00) [2]

Я понял! Надо было писать не
p.Font.Name:='Arial';
p.Font.Size:=20;
а
p.Canvas.Font.Name:='Arial';
p.Canvas.Font.Size:=20;


Expl   (2004-11-03 20:29:00) [3]

Причем, я тут посмотрел, глючить начинает если в процедуре есть вот эти 2 строчки:
p.Font.Name:='Arial';
p.Font.Size:=20;
А без них и с выводом текста работает, правда, шрифт не тот.


Expl   (2004-11-03 20:13:00) [4]

procedure Show_Shulte(P: TPaintBox);
var x,y:integer;
   k,i,j:integer;
begin
x:=((p.Width div 2)-155);
y:=((p.Height div 2)-155);
P.Canvas.FillRect(P.Canvas.ClipRect);
P.Canvas.Brush.Color := ClBtnFace;
p.Canvas.Pen.Color:=clBlack;
p.Canvas.Pen.Style:=psSolid;
P.Canvas.Brush.Style:=bsSolid;
For i:=0 to 4 do
  For j:=0 to 4 do
     P.Canvas.Rectangle(x+i*64,y+j*64,x+(i+1)*65,y+(j+1)*65);
p.Canvas.Pen.Color:=clGreen;
P.Canvas.Brush.Color := clGreen;
P.Canvas.Brush.Style:=bsSolid;
P.Canvas.Ellipse(x+128+(32-8),y+128+(32-8),x+128+(32+8),y+128+(32+8));
//вывод текста
P.Canvas.Brush.Color := ClBtnFace;
p.Font.Name:='Arial';
p.Font.Size:=20;
for i:=0 to 4 do
  for j:=0 to 4 do
     if (i<>2) or (j<>2) then
           begin
           k:=random(24)+1;
           if k<10 then
               p.Canvas.TextOut(x+23+i*64,y+18+j*64,IntToStr(k))
           else p.Canvas.TextOut(x+16+i*64,y+18+j*64,IntToStr(k));
           end;
end;


Mihey_temporary   (2004-11-03 20:09:00) [5]

Покажи код.


Наверх

Титульная страница Поиск, карта сайта Написать письмо