Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.11;
Скачать: CL | DM;

Вниз

Чего-то я не улавливаю :(   Найти похожие ветки 

 
Alx2 ©   (2002-03-29 17:19) [0]

Такой вот вопрос:
В обработчике OnPaint у Form1 пишу
Begin
If Not NeedSlowShow Then exit;
NeedSlowShow := false;
BitMap := GetFormImage;
...............
End;
Потом смотрю в BitMap - там кнопки прорисованы только в виде блеклых прямоугольников (как будто сработал только ответ на WM_ERASEBKGND).
Если то же самое делаю в обработчике OnClick какой-нибудь кнопки, то BitMap содержит точную копию формы. Как добиться, чтобы и в первом случае была точная копия?

PS В обработчике OnPaint GetFormImage вызывается единожды, при самой первой прорисовке (ну это и так видно).


 
MBo ©   (2002-03-29 17:29) [1]

OnPaint occurs before any controls on the form are painted.


 
Alx2 ©   (2002-03-29 17:32) [2]

Опять слонов не замечаю :))
Спасибо!


 
Alx2 ©   (2002-03-29 17:33) [3]

>MBo © (29.03.02 17:29)
Но, поторопился я.
А разве GetFormImage не должна обо всем позаботится?


 
MBo ©   (2002-03-29 17:37) [4]

по исходникам, ни о чем она не заботится- только Lock Сanvas и PaintTo


 
MBo ©   (2002-03-29 17:39) [5]

может, попробовать посылать User-Message из OnPaint и в его обработчике GetFormImage


 
Alx2 ©   (2002-03-29 17:40) [6]

>MBo © (29.03.02 17:37)
Не понимаю :(
Ведь OnPaint - почти обычный метод и из него я прошу форму нарисоваться на BitMap через GetFormImage. Что же мешает ей адекватно нарисоваться на BitMapе?


 
Alx2 ©   (2002-03-29 17:42) [7]

>MBo © (29.03.02 17:39)
Попробую. Кажется, начинаю допирать :)


 
Alx2 ©   (2002-03-29 17:48) [8]

Не получилось...
Все то же самое


 
MBo ©   (2002-03-29 17:50) [9]

попробуй - из Paint таймер запусти на 0.2 сек. и в OnTimer


 
Alx2 ©   (2002-03-29 17:55) [10]

Тогда алгоритм накроется... Вот непричесанный код того, чего я хотел бы:

Begin
If Not NeedSlowShow Then exit;
NeedSlowShow := false;

BitMap := GetFormImage;

sSize := trunc(sqrt(sizeof(pArray) / sizeof(pArray[1])));
cSize := sSize * sSize;
W := round(Width / sSize) + 5;
H := round(Height / sSize) + 5;
For K := 0 To sSize - 1 Do
For L := 0 To sSize - 1 Do
With pArray[K * sSize + L] Do
Begin
X := round(K * Width / sSize);
Y := round(L * Height / sSize);
End;
With Canvas Do
Begin
BRUSH.COLOR := COLOR;
Pen.Style := psClear;
Repeat
P := GetVal(pArray, cSize);
CopyRect(Rect(P.X, P.Y, P.X + W, P.Y + H),BitMap.Canvas,Rect(P.X, P.Y, P.X + W, P.Y + H));
Sleep(1);
dec(cSize);
Until cSize = 0;
End;
BitMap.Free;
End;


Это я пишу в продолжение вопроса "о плавном появлении формы".
Делаю снимок формы и по кускам ее вывожу.


 
Alx2 ©   (2002-03-29 18:35) [11]

Короче говоря - х/з.
Пошел учиться....



Страницы: 1 вся ветка

Текущий архив: 2002.04.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
1-32800
SPeller
2002-04-01 10:06
2002.04.11
Опять DLL


7-32985
kievsash
2002-01-14 03:05
2002.04.11
Как подставить свою прогу на Ctrl+Alt+Del


1-32881
Dizer
2002-03-29 16:32
2002.04.11
Разница во времени


3-32673
grabovsky
2002-03-20 16:32
2002.04.11
сохранение данных в StringGrid


1-32850
AFROLOV
2002-03-28 15:37
2002.04.11
Как узнать что пользователь нажал функциональную клавишу (F1-F12)