Вверх ↑
Этот топик читают: Гость
Ответов: 1379
Рейтинг: 86
#1: 2014-01-04 21:12:55 ЛС | профиль | цитата
Привет всем и с прошедшими праздниками, давно здесь не отписывался

Суть: когда в Img_Tween загружаешь картинки, есть вероятность, что они загрузятся некорректно и, либо обе, либо только одна из двух будут сплошным цветом:

Примерно так
Цвет случайный, особой логики в этом не заметил. Система: Windows 8 x64, компонент обновлён с SVN.
На маленьких изображениях (например, как в схеме в wiki статье компонента) получить баг не удалось, а вот на больших вполне можно.
Тестовая схема с двумя большими (1280х720) изображениями. Можно скачать вместе с ними, а можно уже после запуска программы загрузить их:
code_32742.txt
карма: 0

0
файлы: 1code_32742.txt [4.2KB] [323]
vip
#1.1контекстная реклама от партнеров
Ответов: 2201
Рейтинг: 675
#2: 2014-01-04 23:25:58 ЛС | профиль | цитата
petrocan, попробуй в конец процедуры doLoad добавить: BitmapB.Clear; BitmapA.Clear;.
подробнее
Выделить элемент Img_Tween: Наложение картинок, нажать Ctrl+F. Вставить строки с пометкой //test.
#pas
procedure THiImg_Tween._work_doLoad;
var BitmapA,BitmapB: PBitmap;
begin
...
...

BitmapC.Clear;
BitmapB.Clear; // test
BitmapA.Clear; // test
end;

procedure THiImg_Tween._work_doTween;
var Diff: integer;
begin
карма: 11

0
Ответов: 1379
Рейтинг: 86
#3: 2014-01-05 00:59:14 ЛС | профиль | цитата
sla8a, спасибо, помогло на тестовой схеме, но в реальном проекте добавило других багов
Оно ничего за пределами компонента не очищает? Потому что в большой схеме начало пропадать содержимое подключенных к Img_Tween компонентов Bitmap (хранение bmp-картинки).

карма: 0

0
Разработчик
Ответов: 26067
Рейтинг: 2121
#4: 2014-01-05 01:39:24 ЛС | профиль | цитата
Вот интересно, а мне не удалось получить глюки с приведенными рисунками
карма: 22

0
Ответов: 1379
Рейтинг: 86
#5: 2014-01-05 01:55:53 ЛС | профиль | цитата
nesco, ты сколько раз нажимал «Загрузить»? После нескольких нажатий (даже со второго) может проявиться.
К слову, первая картинка, которая «весит» больше (~1 Mb), и обращается в чёрную (в основном).
Проверил на Windows 7 x86 — то же самое.
карма: 0

0
Разработчик
Ответов: 26067
Рейтинг: 2121
#6: 2014-01-05 02:21:50 ЛС | профиль | цитата
Похоже на перегрузку ресурсов. Засунь компонент в динамический мульт и не парь себе мозг

Add(MainForm,2953706,112,91)
{
Width=1303
Height=810
Color=16777215
Font=[Segoe UI,9,0,0,1]
Caption="Img_Tween test"
BorderStyle=1
Position=1
}
Add(PaintBox,9899821,686,189)
{
Left=10
Top=55
Width=1280
Height=720
ClearBeforeDraw=0
link(onBeforeDraw,11482459:doDraw,[(729,195)(729,252)(671,252)(671,272)])
}
Add(Button,7170370,420,119)
{
Left=340
Top=20
Width=70
Height=30
ParentFont=0
Enabled=1
Caption="Загрузить"
Point(doEnabled)
link(onClick,9112212:doWork2,[])
}
Add(Button,8954352,252,189)
{
Left=430
Top=20
Width=70
Height=30
ParentFont=0
Enabled=1
Caption="Появление"
Point(doEnabled)
link(onClick,13959705:doEvent1,[])
}
Add(Button,14657932,252,224)
{
Left=505
Top=20
Width=70
Height=30
ParentFont=0
Enabled=1
Caption="Исчезание"
Point(doEnabled)
link(onClick,1492423:doEvent1,[])
}
Add(Counter,5801604,420,189)
{
Max=256
Step=16
link(onNext,7146431:doEvent1,[])
}
Add(Timer,9356290,336,189)
{
@Hint=#7:Fade In|
Interval=40
Enable=1
AutoStop=16
Point(onStop)
link(onTimer,5801604:doNext,[])
link(onStop,3365731:doEvent1,[(380,202)(380,167)(62,167)(62,237)])
}
Add(Timer,11161004,336,224)
{
@Hint=#8:Fade Out|
Interval=40
Enable=1
AutoStop=16
Point(onStop)
link(onTimer,5801604:doPrev,[(394,230)(394,202)])
link(onStop,1534113:doEvent1,[(380,237)(380,263)(58,263)(58,202)])
}
Add(Img_Bmp,11482459,686,266)
{
link(Bitmap,9899821:Bitmap,[])
link(SourceBitmap,3779779:Result,[(699,257)(727,257)(727,306)(580,306)])
}
Add(Label,15003263,504,189)
{
Left=710
Top=30
Width=10
Height=17
Color=16777215
ParentFont=0
Caption="--"
}
Add(Hub,7146431,469,189)
{
link(onEvent1,15003263:doText,[])
link(onEvent2,3779779:doTween,[(494,202)(494,237)(543,237)(543,209)])
}
Add(ChanelToIndex,2900863,168,189)
{
link(onIndex,8954352:doEnabled,[])
}
Add(ChanelToIndex,13739476,168,224)
{
link(onIndex,14657932:doEnabled,[])
}
Add(Hub,3365731,70,231)
{
link(onEvent1,13739476:doWork2,[])
link(onEvent2,16760275:doWork2,[(93,244)(93,195)])
}
Add(Hub,1534113,70,196)
{
link(onEvent1,8556691:doWork2,[])
link(onEvent2,3531328:doWork2,[(126,209)(126,230)])
}
Add(Hub,13959705,301,189)
{
link(onEvent1,9356290:doTimer,[])
link(onEvent2,16760275:doWork1,[(327,202)(327,181)(151,181)])
}
Add(Hub,1492423,301,224)
{
link(onEvent1,11161004:doTimer,[])
link(onEvent2,3531328:doWork3,[(327,237)(327,260)(144,260)])
}
Add(HubEx,16760275,147,189)
{
link(onEvent,2900863:doWork1,[])
}
Add(HubEx,3531328,140,224)
{
link(onEvent,13739476:doWork1,[])
}
Add(StyleXP,5735156,63,91)
{
}
Add(Button,16659347,427,49)
{
Left=10
Top=20
Width=260
Height=30
ParentFont=0
Caption="Загрузить картинки из локальных файлов"
Point(doEnabled)
link(onClick,98461:doEvent1,[])
}
Add(PNG,12779528,574,49)
{
FileName="1.png"
Point(doBitmap)
Point(Bitmap)
}
Add(Hub,6359569,546,49)
{
link(onEvent1,12779528:doLoad,[])
link(onEvent2,12779528:doBitmap,[(567,62)(567,69)])
}
Add(PNG,5893391,581,91)
{
FileName="2.png"
Point(doBitmap)
Point(Bitmap)
}
Add(Hub,10622115,553,91)
{
link(onEvent1,5893391:doLoad,[])
link(onEvent2,5893391:doBitmap,[(574,104)(574,111)])
}
Add(Label,4688860,112,49)
{
Left=340
Top=3
Width=235
Height=17
Color=16777215
ParentFont=0
Caption="Управление Img_Tween"
AutoSize=1
Alignment=2
}
Add(Label,3391094,63,49)
{
Left=595
Top=30
Width=107
Height=17
Color=16777215
ParentFont=0
Caption="Степень вхождения:"
}
Add(Hub,98461,476,49)
{
OutCount=4
link(onEvent1,6359569:doEvent1,[])
link(onEvent2,10622115:doEvent1,[(528,62)(528,97)])
link(onEvent3,12629267:doData,[(505,69)(505,86)(371,86)(371,55)])
link(onEvent4,2153158:doEvent1,[(508,76)(508,97)(375,97)(375,125)])
}
Add(DoData,12629267,385,49)
{
Data=Integer(0)
link(onEventData,16659347:doEnabled,[])
}
Add(HubEx,8556691,140,196)
{
link(onEvent,2900863:doWork2,[])
}
Add(Hub,2153158,385,119)
{
OutCount=3
link(onEvent1,7170370:doEnabled,[])
link(onEvent2,9112212:doWork3,[(473,132)])
link(onEvent3,8556691:doWork1,[(411,139)(411,161)(144,161)])
}
Add(HubEx,9112212,469,119)
{
link(onEvent,12374186:doEvent1,[])
}
Add(MultiElementEx,3779779,574,189)
{
Mode=1
link(BitmapA,12779528:Bitmap,[])
link(BitmapB,5893391:Bitmap,[])
link(DiffB2A,5801604:Count,[(594,180)(615,180)(615,229)(426,229)])
link(onTweem,9899821:doRefresh,[])
}
BEGIN_SDK
Add(EditMultiEx,3057374,21,21)
{
WorkCount=#7:##clear|5:##add|7:doTween|
EventCount=#7:onTweem|
VarCount=#6:Result|
DataCount=#7:BitmapA|7:BitmapB|7:DiffB2A|
Width=146
Height=123
Point(##clear)
Point(##add)
link(##add,4872078:doLoad,[(46,34)(46,83)])
link(Result,4872078:Result,[(27,117)(90,117)])
link(doTween,4872078:doTween,[(53,41)(53,90)])
}
Add(Img_Tween,4872078,84,77)
{
Point(Result)
link(onTween,3057374:onTweem,[(123,83)(123,27)])
link(BitmapA,3057374:BitmapA,[(90,68)(27,68)])
link(BitmapB,3057374:BitmapB,[(97,61)(34,61)])
link(DiffB2A,3057374:DiffB2A,[(104,54)(41,54)])
}
END_SDK
Add(Hub,12374186,497,119)
{
link(onEvent1,3779779:##clear,[(564,125)(564,195)])
link(onEvent2,3779779:##add,[(554,132)(554,202)])
}


По крайней мере, такая схема спокойно выдержала рисунки 4000х3000 пикселей.
карма: 22

0
6
Сообщение
...
Прикрепленные файлы
(файлы не залиты)