Главная страница
    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.007 c
3-32716
Марина
2002-03-22 09:45
2002.04.11
Редактирование данных, полученных в результате выполнения SQL-запроса


14-32984
Fellomena
2002-02-28 10:51
2002.04.11
Pro глюки программеров и не только... ;)


14-32938
copyr25
2002-02-27 18:36
2002.04.11
Судьбоносный для России Год Змеи.


3-32669
Пользователь
2002-03-20 15:08
2002.04.11
Обход всех данных в хранимой процедуре


4-33015
zoid
2002-02-11 14:49
2002.04.11
Пресловутый TrayIcon - проблема с PopupMenu





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский