Часть из Image вырезать?

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

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

Часть из Image вырезать?

Сообщение McLion » 23.01.2016 21:33:35

Всем привет,

у меня на форме Image1 и Image2. Хочу вырезать маленький прямоугольник их Image1 и показать его в Image2. Как это сделать?

Спасибо!
Аватара пользователя
McLion
постоялец
 
Сообщения: 332
Зарегистрирован: 06.02.2015 18:41:00

Re: Часть из Image вырезать?

Сообщение Sharfik » 24.01.2016 00:26:35

Скорее всего через Canvas. Должен быть метод на подобие CopyRect
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 809
Зарегистрирован: 20.07.2013 01:04:30

Re: Часть из Image вырезать?

Сообщение McLion » 24.01.2016 00:35:00

Так точно, уже сделал. Теперь только проблемка, в какое событие это засунуть, чтоб при запуске срабатывало, а то в ObShow, OnPaint, OnResize все черно, то-есть не рисует.
Аватара пользователя
McLion
постоялец
 
Сообщения: 332
Зарегистрирован: 06.02.2015 18:41:00

Re: Часть из Image вырезать?

Сообщение Снег Север » 24.01.2016 09:23:02

Попробуйте вставить в Image1PictureChanged
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3053
Зарегистрирован: 27.11.2007 16:14:47

Re: Часть из Image вырезать?

Сообщение McLion » 24.01.2016 16:59:10

Тоже не хоче... ошибку выдает.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
McLion
постоялец
 
Сообщения: 332
Зарегистрирован: 06.02.2015 18:41:00

Re: Часть из Image вырезать?

Сообщение Alex2013 » 25.01.2016 09:59:19

А картинка на которую копируешь фрагмент инициализирована ?
Еще возможно нужно принудительно нарисовать белый фон ..
В общем гадать можно долго так что лучше посмотри как я разбирался с подобными проблемами тут
ИзображениеИзображение

:arrow: viewtopic.php?f=5&t=10313 (это рабочая тема, что бы понять для чего я "огород городил" )
:arrow: Nv_BETA003M.zip А это собственно софтина (относительно свежая версия )
(Исходники прилагаются )
Alex2013
долгожитель
 
Сообщения: 3145
Зарегистрирован: 03.04.2013 11:59:44

Re: Часть из Image вырезать?

Сообщение McLion » 28.01.2016 00:21:59

@Alex2013 пасиб, буду смотреть.

Еще вопрос по CopyRect, как я понял он копирует нарисованную картинку. А не подскажите функцию которая из картинки копирует которая лежит на диске или в ресурсах?
Аватара пользователя
McLion
постоялец
 
Сообщения: 332
Зарегистрирован: 06.02.2015 18:41:00

Re: Часть из Image вырезать?

Сообщение Снег Север » 28.01.2016 09:49:35

McLion писал(а):А не подскажите функцию которая из картинки копирует которая лежит на диске или в ресурсах?
Нет таких функций, там лежит не картинка, а набор байтов. Чтобы из них получилась картинка, их надо преобразовать, а самый простой способ - это стандартно загрузить и нарисовать. На канве вспомогательной переменной, как это обычно делают.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3053
Зарегистрирован: 27.11.2007 16:14:47

Re: Часть из Image вырезать?

Сообщение CynicRus » 28.01.2016 15:22:52

McLion писал(а):@Alex2013 пасиб, буду смотреть.

Еще вопрос по CopyRect, как я понял он копирует нарисованную картинку. А не подскажите функцию которая из картинки копирует которая лежит на диске или в ресурсах?


можной считать в одномерный массив структур типа
Код: Выделить всё
  TRGB32 = packed record
    B, G, R, A: Byte;
  end;

и потом вот так:
Код: Выделить всё
for i := x to y do
    Move(self.FData[i * self.w + x], Result.FData[(i-y) * result.w],result.Width * SizeOf(TRGB32));
CynicRus
постоялец
 
Сообщения: 106
Зарегистрирован: 28.06.2012 14:31:11

Re: Часть из Image вырезать?

Сообщение Alex2013 » 28.01.2016 17:26:35

Прямо с диска читать смысла нет ... Но можно вырезать с загруженного но "не нарисованного" на форме TBitMap (или TImage так как он поддерживает больше форматов при загрузке )..
var B:TBitMap;
...
B:=TBitMap.Create;
B.LoadFromFile(...);
...
// тут копируем что надо и куда надо через Canvas.CopyRect...
B.free;
Зы
Прямая бинарная операция типа Move может привести к большим неприятностям, так как никто не знает заранее что за формат у контекста на который и с которого копируешь ....
(Некоторые редакторы например поверяют изображение при записи и пишут не спрашивая например в однобитном формате. :idea: Загружаешь думая что там стандартный RGB ... но тут-то и наступает программе полный капут ! :mrgreen: )
Alex2013
долгожитель
 
Сообщения: 3145
Зарегистрирован: 03.04.2013 11:59:44

Re: Часть из Image вырезать?

Сообщение CynicRus » 28.01.2016 18:09:21

Alex2013 писал(а):(Некоторые редакторы например поверяют изображение при записи и пишут не спрашивая например в однобитном формате. :idea: Загружаешь думая что там стандартный RGB ... но тут-то и наступает программе полный капут ! :mrgreen: )

Дык проверять нужно, чего читаешь-))) А если сам пишешь, сам читаешь - то вообще никаких проблем-)
CynicRus
постоялец
 
Сообщения: 106
Зарегистрирован: 28.06.2012 14:31:11


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 237

Рейтинг@Mail.ru