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

Xvir43

Пользователи
  • Постов

    1
  • Зарегистрирован

  • Посещение

Активность репутации

  1. Like
    Xvir43 отреагировална Brovin Yaroslav в Как вырезать часть картинки TBitmap?   
    Часть исходного TBitmap вырезается при помощи отрисовки этой части в другой TBitmap.
    Допустим есть такой проект:

    Тогда алгоритм по вырезанию будет следующий:
    Определяем регион вырезаемой области:
    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); Результат:

  2. Thanks
    Xvir43 отреагировална Botov Nikita в "Ластик" для TImage   
    Отвечу сам на свой вопрос:
    if Sender is TImage then with TImage(Sender).Bitmap.Canvas do if BeginScene then try ClearRect(TRectF.Create(x-10, y-10, x+10, y),1); finally EndScene; end; Единственное, стирает прямоугольной формой, как сделать круглой не нашел. 
    Тему можно закрывать
×
×
  • Создать...