FreeAndNil - эт что? Таблетка от всех болезней?
Посмотрите что делают bmp.Clear и bmp.FreeImage...
п.с.
каждому куличику...
Модератор: Модераторы
pupsik писал(а): А толку, возможно, никакого. Менять алексу надо логику программы. Иначе или лаги, или странные вопросы.
vitaly_l писал(а):Если ответ, Да, то в общем-то я прислушаюсь и буду удалять командой FreeAndNil.
BeginРath(CurCanvas .Handle);
DrawFig(-1,DrawList[i]);//Рисую фигуру через скрипт ...
Endpath(CurCanvas .Handle);
// FlattenPath(CurCanvas .Handle);// неясно что делает и нужно ли мне ...
HR:=pathToRegion(CurCanvas .Handle); // !!!!!
GetRgnBox(Hr,R); // R искомый TRect
DeleteObject(Hr);
...
// Инициализирую метафайл ...
MyMetafile := TMetafile.Create;
MC:= TMetafileCanvas.CreateWithComment(MyMetafile, BufBMP.Canvas.handle,
'Author', 'Made This');
MC.Pen.Mode:= CurCanvas.Pen.Mode;
CurCanvas:=MC;//Перенаправляю Canvas
DrawFig(-1,DrawList[i]);//Рисую фигуру (Вот от этого вызова желательно избавится ! )
S:=DrawList[i];
// Это временный чит ... (Сам бы себя забанил ! )
// Часть тупя подмена команды на "удобную"
// Часть переход на медленный самопал RecogRect(I)..
FSR:=False;
case next1(S,' ') of
'STAR','RAPHAEL_STAR':S:='RECT '+S;
'LINE','RAPHAEL_LINE':S:='RECT '+S;
'RAPHAEL_GRADI':// Тут случай чуть сложнее
begin
S1:='RECT '+next1(S,' ')+' '+next1(S,'/')+' ';
next1(S,' ');S:=S1+S;
end;
'RAPHAEL_KUB','KUB':FSR:=true;
'RAPHAEL_POLILINE','POLILINE':FSR:=true;
'RAPHAEL_KONTUR','KONTUR':FSR:=true;
else S:=DrawList[i]
end ;
If not FSR Then begin
Beginpath(mc.Handle);
DrawFig(-1,S);//Рисую фигуру (Опять перерисовка для получения пути )
endpath(mc.Handle);
//FlattenPath(mc.Handle);
HR:=pathToRegion(mc.Handle);
GetRgnBox(Hr,R);
DeleteObject(Hr);
end;
MC.Free; //! Обязательно очищать MetafileCanvas перед "клонированием" ...
CurCanvas:=SaveCanvas;// Востанавливаю Canvas...
zub писал(а):У тебя вся программа состоит из какихто багов хаков и костылей. так нельзя.
POLyLINE
Сравнивать стринги, и вообще сам подход на стрингах (передача в скрипты значений тоже стрингами?) мягко скажем - не очень нормально
zub писал(а):В смысле не ожидал? Паскаль как и паскальскрипт строго типизированы, вполне логично это использовать.
Ну а стринги сравнивать просто нахуа? идентификаторы должны быть числовые а не строковые.
case next1(S,' ') of
'STAR',
...
zub писал(а):я невидел твоих исходников, но судя по
- Код: Выделить всё
case next1(S,' ') of
'STAR',
...
это обычная строка. можешь называть как хочешь, сути это неменяет.
имя команды + параметры, потом скрипт парсит параметры... угадал?
case next1(S,' ') of
'STAR',
...
"универсальность скриптов" перерисовки фигур можно сохранить через добавление специального "флага исключения" (возвращаемого скриптом ) или возможности по разному рисовать фигуры для получения границ и для обычного случая ...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 91