Часть из Image вырезать?
Модератор: Модераторы
Часть из Image вырезать?
Всем привет,
у меня на форме Image1 и Image2. Хочу вырезать маленький прямоугольник их Image1 и показать его в Image2. Как это сделать?
Спасибо!
у меня на форме Image1 и Image2. Хочу вырезать маленький прямоугольник их Image1 и показать его в Image2. Как это сделать?
Спасибо!
Скорее всего через Canvas. Должен быть метод на подобие CopyRect
Так точно, уже сделал. Теперь только проблемка, в какое событие это засунуть, чтоб при запуске срабатывало, а то в ObShow, OnPaint, OnResize все черно, то-есть не рисует.
- Снег Север
- долгожитель
- Сообщения: 3071
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Попробуйте вставить в Image1PictureChanged
Тоже не хоче... ошибку выдает.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
А картинка на которую копируешь фрагмент инициализирована ?
Еще возможно нужно принудительно нарисовать белый фон ..
В общем гадать можно долго так что лучше посмотри как я разбирался с подобными проблемами тут


viewtopic.php?f=5&t=10313 (это рабочая тема, что бы понять для чего я "огород городил" )
Nv_BETA003M.zip А это собственно софтина (относительно свежая версия )
(Исходники прилагаются )
Еще возможно нужно принудительно нарисовать белый фон ..
В общем гадать можно долго так что лучше посмотри как я разбирался с подобными проблемами тут


(Исходники прилагаются )
@Alex2013 пасиб, буду смотреть.
Еще вопрос по CopyRect, как я понял он копирует нарисованную картинку. А не подскажите функцию которая из картинки копирует которая лежит на диске или в ресурсах?
Еще вопрос по CopyRect, как я понял он копирует нарисованную картинку. А не подскажите функцию которая из картинки копирует которая лежит на диске или в ресурсах?
- Снег Север
- долгожитель
- Сообщения: 3071
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Нет таких функций, там лежит не картинка, а набор байтов. Чтобы из них получилась картинка, их надо преобразовать, а самый простой способ - это стандартно загрузить и нарисовать. На канве вспомогательной переменной, как это обычно делают.McLion писал(а):А не подскажите функцию которая из картинки копирует которая лежит на диске или в ресурсах?
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));Прямо с диска читать смысла нет ... Но можно вырезать с загруженного но "не нарисованного" на форме TBitMap (или TImage так как он поддерживает больше форматов при загрузке )..
var B:TBitMap;
...
B:=TBitMap.Create;
B.LoadFromFile(...);
...
// тут копируем что надо и куда надо через Canvas.CopyRect...
B.free;
Зы
Прямая бинарная операция типа Move может привести к большим неприятностям, так как никто не знает заранее что за формат у контекста на который и с которого копируешь ....
(Некоторые редакторы например поверяют изображение при записи и пишут не спрашивая например в однобитном формате.
Загружаешь думая что там стандартный RGB ... но тут-то и наступает программе полный капут !
)
var B:TBitMap;
...
B:=TBitMap.Create;
B.LoadFromFile(...);
...
// тут копируем что надо и куда надо через Canvas.CopyRect...
B.free;
Зы
Прямая бинарная операция типа Move может привести к большим неприятностям, так как никто не знает заранее что за формат у контекста на который и с которого копируешь ....
(Некоторые редакторы например поверяют изображение при записи и пишут не спрашивая например в однобитном формате.
Alex2013 писал(а):(Некоторые редакторы например поверяют изображение при записи и пишут не спрашивая например в однобитном формате.Загружаешь думая что там стандартный RGB ... но тут-то и наступает программе полный капут !
)
Дык проверять нужно, чего читаешь-))) А если сам пишешь, сам читаешь - то вообще никаких проблем-)
