zub писал(а):какаято хрень, какаято маска, чтото глючит... это не указал. это даже не угадал. кокраз некоторые нашли причину и некоторые предложили как ее обойти
Про маски - это был поиск. А про вердикт, я вот про этот пост говорил:
vitaly_l писал(а):zub писал(а):
Как надо сделать описано в первом посте. Есть TMultiImage с картинкой, в него надо вписать цветной текст и отдать обратно. ферштейн?
Ты пишешь текст на экранный канвас, мне нужно писать на "чтото" в памяти, не асоциированое с устройством отображения. ферштейн?
Это наверное очень удивит, но стоит мне загрузить ваш проект, как перестаёт работать Timage. Однако, если я создаю новый проект, загружаю картинку и там рисую текст в Timage, то он рисуется красным на картинке. Но стоит мне тоже самое сделать в вашем проекте, как текст начинает рисоваться белым. Вы как-то там поломали Timage или точнее какие-то запчасти от него, когда подключали Vampyre. Я при тесте Timage даже не подгружаю TMultiImage в вашем проекте и закомментировал его юниты, но всё равно если беру ваш проект то рисуется белым. А если создаю новый проект, то в Timage всё работает и текст рисуется красным. ферштейн, кто всё поломал?
Добавлено спустя 111 час 111 минут 111 секунд:
zub писал(а):
Проблема оказалась чуток не тут. если LImg сохранить в файл, то там надпись красная
Попробуйте сохранить img и удивитесь ещё больше, т.к. текст вообще будет то серым, то красным (в зависимости где смотреть). Такое возможно из-за разной битности или иных цветовых установок у Vampyre и TImage. И похоже Vampyre, как-то "подменил" установки битности по умолчанию у TImage и последнего от этого сильно глючит, тогда дело не в маске а в битности. Короче проблема в разной битности получаемых и обрабатываемых картинок, т.к. лазарус по умолчанию работает только с 24 битами, а Vampyre с 32. + ещё маска
zub писал(а):ты выложишь эти 2 проекта?
Я к сожалению все их удалил с машины, как только причина стала ясна. Решение я всё равно не стал-бы искать, т.к. на мой взгляд, овчинка выделки не стоит. Есть стандартные средства лазаруса и они предназначены для рисования поставленной задачи. Вампир насколько я понимаю, умеет только отображать и не предназначен для рисования. Соответственно и нужно рисовать стандартной битмапкой и отправлять результат вампиру (раз уж нужен именно вампир). Но проблема в том что, стоит только подключить модуль вампира, так сразу: Timage, Tpicture, TBitmap - перестают рисовать красный текст. Вот на этом всё становится на свои места, т.к. остальное это уже: "дело мастера БО". Вот как только сможете нарисовать КРАСНЫЙ текст на обычной TBitmap и отобразить его в обычном Timage и
это при подключенном Вампире, то мгновенно увидите, что избавились от бага.
Порядок действий такой:
1) Создаёте новый проект в лазарусе.
2) Включаете туда этот код:
- Код: Выделить всё
var
ts:TTextStyle;
bmp:TBitmap;
begin
Image1.Picture.LoadFromFile('balalayka.jpg');
bmp:=TBitmap.Create;
bmp.Height:=Height;
bmp.Width:=Width;
ts:=bmp.Canvas.TextStyle;
bmp.Assign(Image1.Picture.Bitmap);
bmp.Canvas.Font.Size:=111;
bmp.Canvas.Font.Quality:=fqCleartypeNatural;
bmp.Canvas.Font.Color:=clRed;
bmp.Canvas.TextRect(Rect(0,0,bmp.Width,bmp.Height),0,0,'TEST',ts);
Image1.Picture.Bitmap.Assign(bmp);
bmp.freee ;)
3) После того как убедились что тест на Image1 рисуется красным, пытаетесь подключить вампир.
4) Если текст на Image1, при подключении вампира - перестаёт рисоваться красным, начинаете делать вышеописанные Вами пасы с чесноком.
5) Как только при подключенном вампире, Ваш Image1 - выведет красный текст, это будет означать что Вы избавились от бага.