0 Members and 1 Guest are viewing this topic.
{$I ABL.PEFlagsForDLL.inc}, {$I AIMP.Plugins.inc}
Вопрос по ACL: после компиляции компоненты должны появиться в палитре?
Всё равно ошибка та же: пытается создать директорию на несуществующем диске B:\.
... П.С. согласен, надо добавить пример в SDK
Вот три демки (пока только по Embedded).
Собрал aimp_visDemo.dll, но ни 5.30, ни 5.40 её не видят.В 5.00, 5.11 работает как в окне, так и в полноэкранном режиме.
Нужной разрядности?
с какой периодичностью вызывается метод Draw
Артём, подскажи в какую сторону копать: мне нужно получить наложение цветов в режиме ADD из нескольких PNG.На картинке это сделано с помощью StretchBlt, но она прозрачность не поддерживает.В твоей ACL.Graphics.Ex вроде, нашёл то что нужно, но, боюсь, без примера мне не разобраться. Так понял, что графика должна загружаться в TACLDib?
LImage := TACLImage.Create('test.png'); try LBitmap := LImage.ToBitmap; try LDib := TACLBitmapLayer; LDib.Assign(LBitmap); finally LBitmap.Free; end; finally LImage.Free; end;
Не получается установить ACLPackage для режима х64
Если без установки в uses прописать нужные модули из runtime, то на каждый (и на все, что те ссылаются) выдаёт:[dcc64 Fatal Error] ACL.Graphics.pas(16): F1026 File not found: 'ACL.Config.inc'
Нужно пути прописать к файлам (ну или кинуть все в папку с проектом)
ACL.Config.inc
так он лежит не в Base, а на уровне выше, рядом с пакетом.
procedure TForm1.DrawBtnClick(Sender: TObject);var LImage : TACLImage; LBitmap : TACLBitmap; LDib : TACLBitmapLayer;begin// LImage := TACLImage.Create(HInstance, 'Red', PChar('RCDATA')); LImage := TACLImage.Create('d:\Delphi_Projects\ACL_exp\Red.png'); try LBitmap := LImage.ToBitmap; try LDib := TACLBitmapLayer.Create; LDib.Assign(LBitmap); finally LBitmap.Free; end; finally LImage.Free; end; PaintBox.Canvas.Brush.Color := clBlack; PaintBox.Canvas.FillRect(PaintBox.ClientRect); LDib.DrawBlend(PaintBox.Canvas, Point(100,100), bmAddition, 255); LDib.Freeend;
LDib := TACLBitmapLayer.Create; LImage := TACLImage.Create('B:\Red.png'); try LImage.SaveToDib(LDib); finally LImage.Free; end; PaintBox1.Canvas.Brush.Color := clBlack; PaintBox1.Canvas.FillRect(PaintBox1.ClientRect); LDib.DrawBlend(PaintBox1.Canvas, Point(100,100), bmAddition, 255); LDib.Free
В общем... я сделал иначе, и оно даже стало чуть проще.
ImgR := TPNGImage.Create; ImgR.LoadFromResourceName(HInstance, 'Red');
ACLDib.Resize использовать не получается
ACLDib.Resize использовать не получается и DrawBlend принимает только TPoint
procedure TForm1.DrawBtnClick(Sender: TObject);var LImage : TACLImage; DstDib, LDib : TACLBitmapLayer;begin LImage := TACLImage.Create(HInstance, 'Red', RT_RCDATA); LDib := TACLBitmapLayer.Create; DstDib := TACLBitmapLayer.Create(PaintBox.ClientRect); try LImage.SaveToDib(LDib); finally LImage.Free; end; PaintBox.Canvas.Brush.Color := clBlack; PaintBox.Canvas.FillRect(PaintBox.ClientRect); LDib.DrawBlend(DstDib.Canvas, Rect(50,50,300,300), 255, true); DstDib.DrawBlend(PaintBox.Canvas, Point(0,0), bmAddition, 255); LDib.Free; DstDib.Freeend;
Но как это будет шевелиться в плагине в Draw, ещё и ресайз слоёв делать надо при изменении размера окна.
Не получается в плагине подключить модули ACL.Graphics.Ex, ACL.Graphics.Images (на форме работает).При попытке компиляции открываются эти файлы и стопорится на одном и том же месте:[dcc64 Fatal Error] ACL.Graphics.Ex.pas(37): F2613 Unit 'Graphics' not found.
В свойствах проекта в разделе компилятора надо дописать в Unit scope names Vcl;Vcl.Imaging;Vcl.Touch;
Не подскажешь, где можно почитать про все эти настройки проекта, желательно на русском, чтоб тебя не дёргать каждый раз?
Всё-таки, на ACL плагин заметно тяжелее получился
Если рисовать без блюра, то по нагрузке почти одинаково
Blur как делаешь? средствами ACL?
последний параметр, как я понял, и задаёт блюр
Смотрю твои ddl-ки, они в сотни кБ укладываются, а у меня вариант на ACL аж 4 мега весит (release).
Это растяжение картинки со сглаживанием.
Кстати, при выводе со сглаживанием, параметр AAlpha в той процедуре игнорируется?
или эффект какой-то слабый.
PaintBox.Canvas.Brush.Color := clBlack; PaintBox.Canvas.FillRect(PaintBox.ClientRect);
После такого у Canvas-а не будет альфа-канала. А мой DrawBlend его учитывает при работе.
всё правильно заработало, но на 2624. Запускаю плагин на другом компе (там 2628) - прозрачности нет. Обновление до 2629 ничего не изменило.
Ничего лучшего пока не придумал, как объявить глабальные переменные в модуле формы, а из модуля визуализации их считывать.Вроде, работает, но насколько это криминально?
И как и куда можно сохранять настройки плагина?
Ничего криминального в этом нет.
Как работать с конфигом плеера есть вот в этом плагине:
Но, как-то, вроде, криво кажется...
Ещё и с локализацией непонятки остались