Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
3-32650
Aidan
2002-03-19 17:19
2002.04.11
Как получить информацию о структуре таблицы с помощью SQL


3-32624
Lord Vader
2002-03-19 08:35
2002.04.11
TTable:добавление колонок


3-32684
Eduard
2002-03-20 11:19
2002.04.11
IBDataset.ParamByName


3-32693
Sergant
2002-03-21 12:43
2002.04.11
Отображение удаленных записей в Grid е


1-32857
Avgurin
2002-03-29 02:38
2002.04.11
Handle





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский