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

Слетают иконки после TakePhotoFromCameraAction


Aleks133

Вопрос

Здравствуйте, экспериментирую с загрузкой своих иконок в imagelist на основе примеров с форума.

Мои действия:

1. Загружаю картинку в TImage

image.png.0c07b2878f3bf0bcd1ddb4ce439fe3e2.png

2.делаю ее круглой

procedure TForm1.Button11Click(Sender: TObject);
var
  b: TBitmap;
begin
  b := TBitmap.Create();
  b.SetSize(512, 512);
  b.canvas.BeginScene();
  try
    b.canvas.Fill.Bitmap.Bitmap := Image1.Bitmap;
    b.canvas.Fill.Kind := TBrushKind.Bitmap;
    b.canvas.Fill.Bitmap.wrapmode := twrapmode.TileStretch;
    b.canvas.FillEllipse(rectf(0, 0, 512, 512), 1);
    finally
    b.canvas.EndScene;
    b.Free;
  end;

 Image1.Bitmap.Assign(b);
end;image.png.5ea8cb0f86a4c7b448c453ab18a0f96e.png

3.загружаю ее в imagelist

function TImageListHelper.Add(aBitmap: TBitmap): integer;
const
  Scale = 1;
var
  vSource: TCustomSourceItem;
  vBitmapItem: TCustomBitmapItem;
  vDest: TCustomDestinationItem;
  vLayer: TLayer;
begin
  Result := -1;
  if (aBitmap.Width = 0) or (aBitmap.Height = 0) then
    exit;

  // add source bitmap
  vSource := Source.Add;
  vSource.MultiresBitmap.TransparentColor := TColorRec.Fuchsia;
  vSource.MultiresBitmap.SizeKind := TSizeKind.Source;
  vSource.MultiresBitmap.Width := Round(aBitmap.Width / Scale);
  vSource.MultiresBitmap.Height := Round(aBitmap.Height / Scale);
  vBitmapItem := vSource.MultiresBitmap.ItemByScale(Scale, True, True);
  if vBitmapItem = nil then
  begin
    vBitmapItem := vSource.MultiresBitmap.Add;
    vBitmapItem.Scale := Scale;
  end;
  vBitmapItem.Bitmap.Assign(aBitmap);

  vDest := Destination.Add;
  vLayer := vDest.Layers.Add;
  vLayer.SourceRect.Rect := TRectF.Create(TPoint.Zero,
    vSource.MultiresBitmap.Width, vSource.MultiresBitmap.Height);
  vLayer.name := vSource.name;
  Result := vDest.Index;
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
    ImageList1.Add(Image1.Bitmap)
end;image.png.4a2c6ac5d859b28c999bdd749e586d5c.png

4. теперь хочу загрузить фото с камеры

procedure TForm1.TakePhotoFromCameraAction1DidFinishTaking(Image: TBitmap);
begin
      //ImageList1.Add(Image);  //способ 1 сразу в ImageList
      Image1.Bitmap.Assign(Image); //способ 2 сначала в TImage потом в ImageList
end;

Иконка с камеры добавляется нормально(становится картинка+Item 4), как обычная(квадратная) так и обрезанная(круглая).

Но как только она добавляется , то все иконки которые были обрезаны по кругу пропадают, а имена остаются.

image.png.9600c584d168d970e4b6678bb7ffe8c3.pngimage.thumb.png.aea41da14f0858adbf770c989ae91dd3.png

Не пойму что я делаю не так?

P.S. если ничего не обрезать, то все работает как надо.   

 

Изменено пользователем Aleks133
Ссылка на комментарий

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

Ответов пока нет

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

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