Перейти к содержанию
  • Регистрация
  • 0
Aleks133

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

Вопрос

Здравствуйте, экспериментирую с загрузкой своих иконок в 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 пользователей онлайн

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

×
×
  • Создать...