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;
procedure TForm1.Button9Click(Sender: TObject);
begin
ImageList1.Add(Image1.Bitmap)
end;
4. теперь хочу загрузить фото с камеры
procedure TForm1.TakePhotoFromCameraAction1DidFinishTaking(Image: TBitmap);
begin
//ImageList1.Add(Image); //способ 1 сразу в ImageList
Image1.Bitmap.Assign(Image); //способ 2 сначала в TImage потом в ImageList
end;
Иконка с камеры добавляется нормально(становится картинка+Item 4), как обычная(квадратная) так и обрезанная(круглая).
Но как только она добавляется , то все иконки которые были обрезаны по кругу пропадают, а имена остаются.
Не пойму что я делаю не так?
P.S. если ничего не обрезать, то все работает как надо.
Вопрос
Aleks133
Здравствуйте, экспериментирую с загрузкой своих иконок в imagelist на основе примеров с форума.
Мои действия:
1. Загружаю картинку в TImage
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;
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;
4. теперь хочу загрузить фото с камеры
procedure TForm1.TakePhotoFromCameraAction1DidFinishTaking(Image: TBitmap);
begin
//ImageList1.Add(Image); //способ 1 сразу в ImageList
Image1.Bitmap.Assign(Image); //способ 2 сначала в TImage потом в ImageList
end;
Иконка с камеры добавляется нормально(становится картинка+Item 4), как обычная(квадратная) так и обрезанная(круглая).
Но как только она добавляется , то все иконки которые были обрезаны по кругу пропадают, а имена остаются.
Не пойму что я делаю не так?
P.S. если ничего не обрезать, то все работает как надо.
Ссылка на комментарий
0 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.