Перейти к содержанию
Fire Monkey от А до Я
  • 0

Как вырезать часть картинки TBitmap?


Ordan

Вопрос

Рекомендуемые сообщения

  • 0
  • Администраторы

Часть исходного TBitmap вырезается при помощи отрисовки этой части в другой TBitmap.
Допустим есть такой проект:
post-1-0-78527700-1419946810_thumb.png
Тогда алгоритм по вырезанию будет следующий:

  • Определяем регион вырезаемой области:
    var
      BitmapSource: TBitmap;
      BitmapDest: TBitmap;
      DestWidth: Integer;
      DestHeight: Integer;
      BitmapSourceRect: TRectF;
      BitmapDestRect: TRectF;
    begin
      BitmapSource := ImageSrc.Bitmap;
      BitmapSourceRect := TRectF.Create(TPointF.Create(nbX.Value, nbY.Value), nbWidth.Value, nbHeight.Value);
    
  •  Создаем TBitmap для вырезанной части:
      DestWidth := Max(0, Round(nbWidth.Value));
      DestHeight := Max(0, Round(nbHeight.Value));
      BitmapDest := TBitmap.Create(DestWidth, DestHeight);
      BitmapDestRect := TRectF.Create(0, 0, BitmapDest.Width, BitmapDest.Height);
    
  • Выполняем отрисовку области исходного битмапа в конечный:
      if BitmapDest.Canvas.BeginScene then
        try
          BitmapDest.Canvas.DrawBitmap(BitmapSource, BitmapSourceRect, BitmapDestRect, 1);
        finally
          BitmapDest.Canvas.EndScene;
        end;
    
  • Выводим полученное изображение на форму:
      ImageDest.Bitmap.Assign(BitmapDest);
    

Результат:

post-1-0-66381500-1419946809_thumb.png

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...