Форум: "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.054 c