FPImage и визуальная конва LCL

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

FPImage и визуальная конва LCL

Сообщение qivi »

Уже нечто подобное спрашивал, но остался без ответа. Немного в другом ключе спрошу. Есть штатные методы перенести изображение из FCL'ного FPImage на LCL'ную визуальную канву?
wavebvg
постоялец
Сообщения: 355
Зарегистрирован: 28.02.2008 03:57:35

Сообщение wavebvg »

FPImage => Bitmap => Canvas

Преобразование в Bitmap
http://wiki.freepascal.org/fcl-image#Image_formats

Есть статья из которой можно почерпать интересные вещи
http://wiki.freepascal.org/Developing_with_Graphics
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

wavebvg писал(а):FPImage => Bitmap => Canvas

Преобразование в Bitmap
http://wiki.freepascal.org/fcl-image#Image_formats


Да я то же нащупал этот несколько сомнительный способ, пожалуй это было бы приемлемо, но в итоге я получаю какие то погрешности и артифакты в виде хаотических чёрточек или затенения отдельных областей изображения.
Последний раз редактировалось qivi 15.04.2014 22:37:38, всего редактировалось 1 раз.
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

qivi, а чем не устраивают LCL-ные обертки над FPImage?
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

То биш сторонние библиотеки? Нет, это не то что мне нужно.
Аватара пользователя
hinst
энтузиаст
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Сообщение hinst »

Можно просто сохранить TFPImage в TMemoryStream, затем загрузить TBitmap из TStream.
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

qivi, какая стоит задача?
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

hinst писал(а):Можно просто сохранить TFPImage в TMemoryStream, затем загрузить TBitmap из TStream.

Интересная мысль, нужно попробовать.

Padre_Mortius писал(а):qivi, какая стоит задача?

Загружать, обрабатывать, или изначально отрисовывать изображение в FPImage, но при этом отображать его на обычной LCL канве без использования сторонних библиотек.

У меня есть ещё идея написать нехитрый метод попиксельной перерисовки FPImage на канву. Это наверно крайне медленный костыль?
wavebvg
постоялец
Сообщения: 355
Зарегистрирован: 28.02.2008 03:57:35

Сообщение wavebvg »

Мне так кажется, что проблема зарылась где-то в коде...
Можете показать пример кода, который не работает корректно?
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

wavebvg писал(а):Мне так кажется, что проблема зарылась где-то в коде...
Можете показать пример кода, который не работает корректно?


Пилить пример сейчас не хочется, а старое не сохранилось. Но суть была в следующем, я рисовал градиент в TFPMemoryImage а потом его нужно было перенести на канву, и он переносился но местами возникали всякие шумы чёрточки и пр. цифровой мусор. Делал примерно следуще, сперва рисовал в TFPMemoryImage, потом его переносил методом Assign(); в TBitMap, после чего его отрисовывал методом Draw(); на канве.
wavebvg
постоялец
Сообщения: 355
Зарегистрирован: 28.02.2008 03:57:35

Сообщение wavebvg »

Да, посмотрел.
Выставьте вот так

Код: Выделить всё

  FBitmap.TransparentMode:= tmFixed;   

и всё будет работать на ура.
Так же, если не лень, подготовьте обновление для TCanvas в лазаре, чтобы он наконец-то же научился работать с прозрачными Bitmap-ами (тут проблема с GTK оберткой, я думаю)
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

wavebvg писал(а):Так же, если не лень, подготовьте обновление для TCanvas в лазаре, чтобы он наконец-то же научился работать с прозрачными Bitmap-ами (тут проблема с GTK оберткой, я думаю)


Если бы я знал как это сделать, давно бы сделал. Если память не изменяет не только под GTK, для теста компилил под Win, вроде то же самое был.
Ответить