FPImage и визуальная конва LCL
Модератор: Модераторы
FPImage и визуальная конва LCL
Уже нечто подобное спрашивал, но остался без ответа. Немного в другом ключе спрошу. Есть штатные методы перенести изображение из FCL'ного FPImage на LCL'ную визуальную канву?
FPImage => Bitmap => Canvas
Преобразование в Bitmap
http://wiki.freepascal.org/fcl-image#Image_formats
Есть статья из которой можно почерпать интересные вещи
http://wiki.freepascal.org/Developing_with_Graphics
Преобразование в Bitmap
http://wiki.freepascal.org/fcl-image#Image_formats
Есть статья из которой можно почерпать интересные вещи
http://wiki.freepascal.org/Developing_with_Graphics
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
- Откуда: Спб
qivi, а чем не устраивают LCL-ные обертки над FPImage?
То биш сторонние библиотеки? Нет, это не то что мне нужно.
Можно просто сохранить TFPImage в TMemoryStream, затем загрузить TBitmap из TStream.
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
qivi, какая стоит задача?
hinst писал(а):Можно просто сохранить TFPImage в TMemoryStream, затем загрузить TBitmap из TStream.
Интересная мысль, нужно попробовать.
Padre_Mortius писал(а):qivi, какая стоит задача?
Загружать, обрабатывать, или изначально отрисовывать изображение в FPImage, но при этом отображать его на обычной LCL канве без использования сторонних библиотек.
У меня есть ещё идея написать нехитрый метод попиксельной перерисовки FPImage на канву. Это наверно крайне медленный костыль?
Мне так кажется, что проблема зарылась где-то в коде...
Можете показать пример кода, который не работает корректно?
Можете показать пример кода, который не работает корректно?
wavebvg писал(а):Мне так кажется, что проблема зарылась где-то в коде...
Можете показать пример кода, который не работает корректно?
Пилить пример сейчас не хочется, а старое не сохранилось. Но суть была в следующем, я рисовал градиент в TFPMemoryImage а потом его нужно было перенести на канву, и он переносился но местами возникали всякие шумы чёрточки и пр. цифровой мусор. Делал примерно следуще, сперва рисовал в TFPMemoryImage, потом его переносил методом Assign(); в TBitMap, после чего его отрисовывал методом Draw(); на канве.
Да, посмотрел.
Выставьте вот так
и всё будет работать на ура.
Так же, если не лень, подготовьте обновление для TCanvas в лазаре, чтобы он наконец-то же научился работать с прозрачными Bitmap-ами (тут проблема с GTK оберткой, я думаю)
Выставьте вот так
Код: Выделить всё
FBitmap.TransparentMode:= tmFixed;
и всё будет работать на ура.
Так же, если не лень, подготовьте обновление для TCanvas в лазаре, чтобы он наконец-то же научился работать с прозрачными Bitmap-ами (тут проблема с GTK оберткой, я думаю)
wavebvg писал(а):Так же, если не лень, подготовьте обновление для TCanvas в лазаре, чтобы он наконец-то же научился работать с прозрачными Bitmap-ами (тут проблема с GTK оберткой, я думаю)
Если бы я знал как это сделать, давно бы сделал. Если память не изменяет не только под GTK, для теста компилил под Win, вроде то же самое был.
