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

Вниз

Тормоза в PaintBox e   Найти похожие ветки 

 
Ciber SLasH ©   (2003-11-16 09:11) [0]

Я тут начал переписывать на KOL свою прогу, вот из чего она состояла на VCL:

на форме 2 компонента TImage, в каждом из них уже загружены две jpg-шки, а сверху набросано несколько кнопок и edit-ов.

в VCL"e вобщем-то тормоза не заметны (в плане отрисовки), но когда я эти картинки прорисовывал в KOL-овском PaintBox"e, то было заметно как сначала на доли секунды появлялась форма, а потом появлялись картинки на PaintBox"e.
И ещё, у меня форма без заголовка, PaintBox растянут на всю ширину и длину формы, бордюры сброшены в ноль, но всё равно выдны по краям бордюры (т.е. куски формы). Как от этого избавиться ?

И что делать с тормозами ?
Ведь как-то не красиво, ты делаешь авторан для диска (как раз то что я и делаю), а картинки на форме прорисовываются с ткаой скоростью, что пользователь успевает заметить форму !!!


 
miek ©   (2003-11-16 10:30) [1]

И каким образом ты картинки отрисовываешь? Не через Pixels[], часом? А событие WM_ERASEBKGND перехватить не забыл?


 
Ciber SLasH ©   (2003-11-16 23:57) [2]

>И каким образом ты картинки отрисовываешь? Не через Pixels[], >часом?
Нет.

>А событие WM_ERASEBKGND перехватить не забыл
А что надо делать при этом событии ?


 
Ciber SLasH ©   (2003-11-18 03:30) [3]

Эй ! Народ.
Ответьте кто-нибудь.


 
Ciber SLasH ©   (2003-11-18 05:18) [4]

Я понял, что нужно делать при WM_ERASEBKGND.
Всё бы ничего, да вот незадача: кинул я на форму панель, и при обрабатываю события перемещения. Так получается блин, что если медленно перемещать форму за панель, то всё нормально, а если чуть резче - то начинаются тормоза, крыса уходит вообще за форму, а форма не успевает переместиться на новое место. Чё делать, незнаю 8-()

Подскажите пожалуйста !!!

Вот текст моей проги:


function TForm1.KOLApplet1Message(var Msg: tagMSG;
 var Rslt: Integer): Boolean;
begin
 Result := false;
 case Msg.message of
   WM_ERASEBKGND: Result := true;
   WM_KEYDOWN: if Msg.wParam = VK_ESCAPE then
                 begin
                   Form.Close;
                   Result := true
                 end
 end
end;

procedure TForm1.Panel1MouseDown(Sender: PControl;
 var Mouse: TMouseEventData);
begin
 if Mouse.Button = mbLeft then  // если кнопка левая...
   begin
     OldLeft := Mouse.X;  // запоминаю позицию крысы
     OldTop := Mouse.Y;
     Dragging := True     // и включаю режим двиганья ;)
   end
end;

procedure TForm1.Panel1MouseMove(Sender: PControl;
 var Mouse: TMouseEventData);
begin
 if Dragging then  // если режим двиганья включен
   begin
     NewLeft := Mouse.X;  // записываю новые координаты крысы
     NewTop := Mouse.Y;
     Form.Left := Form.Left + NewLeft - OldLeft;  // устанавливаю координаты окна
     Form.Top := Form.Top + NewTop - OldTop
   end
end;

procedure TForm1.Panel1MouseUp(Sender: PControl;
 var Mouse: TMouseEventData);
begin
 if Mouse.Button = mbLeft then  //Если кнопка левая...
   Dragging := False       //Выключаю режим двиганья
end;

procedure TForm1.KOLForm1FormCreate(Sender: PObj);
var
 Stream: PStream;
 jpg: PJpeg;
begin
 Stream := NewMemoryStream;
 Resource2Stream(Stream, HInstance, "IMAGE", RT_RCDATA);
 Stream.Position := 0;
 jpg := NewJpeg;
 jpg.LoadFromStream(Stream);
 BImage := NewBitmap(jpg.Width, jpg.Height);
 jpg.Draw(BImage.Canvas.Handle, 0,0);
 Stream.Free;
 Stream := NewMemoryStream;
 Resource2Stream(Stream, HInstance, "WCAPTION", RT_RCDATA);
 Stream.Position := 0;
 jpg.LoadFromStream(Stream);
 BwCaption := NewBitmap(jpg.Width, jpg.Height);
 jpg.Draw(BwCaption.Canvas.Handle, 0,0);
 jpg.Free;
 Stream.Free
end;

procedure TForm1.KOLForm1Destroy(Sender: PObj);
begin
 BImage.Free;
 BwCaption.Free
end;

procedure TForm1.KOLForm1Paint(Sender: PControl; DC: HDC);
begin
 BImage.Draw(DC, 0,26)
end;

procedure TForm1.Panel1Paint(Sender: PControl; DC: HDC);
begin
 BwCaption.Draw(DC, 0,0)
end;

Глобальные переменные:
 public
   BImage,BwCaption: PBitmap;
   NewLeft,NewTop,OldLeft,OldTop: Integer;   // для координат окна
   Dragging: Boolean;                        // признак перетаскивания окна


 
SPeller ©   (2003-11-18 08:21) [5]

Слушай возьми мою компоненту SPLPicture, загрузи в неё битмап (переведи свой жпег в бмп) и будь счастлив с отрисовкой! Там даже примерчик небольшой авторана для диска канает.


 
SPeller ©   (2003-11-18 08:22) [6]

ЗЫ: и форма там за любое место таскается.


 
miek ©   (2003-11-18 16:40) [7]

c>А что надо делать при этом событии ?

Да в том-то и дело, что ничего - только вернуть флаг успешного завершения. По умолчанию оно фон стирает дефолтным цветом. Причем по идее в KOL это должно быть отключено, но иногда самом собой включается.


 
Ciber SLasH ©   (2003-11-19 01:35) [8]

2SPeller:
>Слушай возьми мою компоненту SPLPicture

Взял, поставил. Делаю проект, кидаю на форму твой компонент, компилю прогу и выпадает ошибка:

[Ошибка] SysUtils.pas(2238): Left side cannot be assigned to
[Ошибка] SysUtils.pas(2253): Left side cannot be assigned to
[Фатальная ошибка] Classes.pas(20): Could not compile used unit "SysUtils.pas"


Я использую подмену SysDCU и подмену Classes, Variants, SysUtils скачянную с этого сайта.


 
SPeller ©   (2003-11-19 08:41) [9]

Бррр..... Почисти uses, блин, ну что за детский сад? Надо же хоть чуть-чуть своей головой думать-то!!!


 
sepa ©   (2003-11-19 10:00) [10]

{$J+}



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

Форум: "KOL";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.036 c
3-1082109937
ksa3003
2004-04-16 14:05
2004.05.16
Выборка пустых значений


7-1081242693
DmitryMN
2004-04-06 13:11
2004.05.16
Индикитор жесткого диска


7-1081026466
Ivane
2004-04-04 01:07
2004.05.16
Завершение процесса.


1-1083311730
Ш-К
2004-04-30 11:55
2004.05.16
FreeAndNil


1-1083426724
student87
2004-05-01 19:52
2004.05.16
Как обоити в цикле несколько компанентов?





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