• 0
BenTen

Как нарисовать круглый TImage

Вопросы

Как лучше реализовать круглое изображение на базе Timage, наподобие того, как нарисованы аватары на этом форуме, если изначально изображение имеет прямоугольную форму.

Пробовал сделать Timage дочерним по отношению к TCircle и установить

Сircle.ClipChildren = True;

Не помогает, поскольку область TCircle тоже прямоугольная.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 ответов на этот вопрос

  • 0

Сверху Image ставит еще один Image с изображением края четырехугольника центр которого прозрачен в виде круга...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Как-то сложновато, хочется попроще и поизящней решение.

Вариант изящный, но пока не понятно, он только с TPath работает или с TCircle тоже будет работать?

Вечером проверю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

а чем вас не устраивает ellipse в свойстве fill можно выбрать изображение и растянуть  (streach)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 1
var
  BmpNew     : TBitmap;
begin
    BmpNew := TBitmap.Create;
    BmpNew.SetSize({нужный размер}, {нужный размер});
    BmpNew.Canvas.BeginScene;
    try
      BmpNew.Canvas.Fill.Kind := TBrushKind.Bitmap;
      BmpNew.Canvas.Fill.Bitmap.WrapMode := TWrapMode.TileStretch;
      BmpNew.Canvas.Fill.Bitmap.Bitmap := {ваш битмап};
      BmpNew.Canvas.Clear(0);
      BmpNew.Canvas.FillEllipse(RectF(0, 0, {нужный размер}, {нужный размер}), 1);
    finally
      BmpNew.Canvas.EndScene;
    end;

    TImage{ваш объект}.Bitmap.Assign(BmpNew);
end;

думаю так

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

я через TCircle делал, просто и удобно вроде

Я тоже. Просто вопрос стоял "Как лучше реализовать круглое изображение на базе Timage...".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Алекс если не секрет, в вашем проекте вы какой метод используете?

 

 

Я там видел вы нарезаете в ImageList кругляшки...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

[rustam_d] В десктопной версии - TCircle, в мобильной - TImage (для ListViewItem) и TCircle (для остального).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

С помощью маски можно любую форму.

TBitmap.CreateFromBitmapAndMask()

 

procedure TForm19.Button1Click(Sender: TObject);
var
  lBitmap, lMask: TBitmap;
begin
  lBitmap := TBitmap.Create;
  lMask := TBitmap.Create;
  try    
    lBitmap.LoadFromFile('C:\tmp\Imgs\4.bmp');
    lMask.LoadFromFile('C:\tmp\Imgs\TestImage04.bmp');
    Image1.Bitmap := lBitmap;
    Image2.Bitmap := lMask;
    Image3.Bitmap.CreateFromBitmapAndMask(lBitmap, lMask);
  finally
    lBitmap.Free;
    lMask.Free;
  end;
end;

CcESX.thumb.png.79d168cf8f3fd1dc2340e43d96994cb9.png

Изменено пользователем ENERGY

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

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

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