Последние записи
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
- wprintf как напечатать кириллицу
- Взаимодействие через командную строку
- Сравнение языков на массивах. Часть 1
- Сравнение языков по скорости
- Чтение огромных xml-файлов
- Как в Python+Selenium webdriver открыть новую вкладку в уже открытом браузере?
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
31st
Май
Как сделать ТImage круглым
Posted by maloy under Delphi, Архив
firmwares
Как можно сделать ТImage круглым?
Или как можно сохранять из ТImage круглое изображение?
Чтобы все встало на свои места, я решил уточнить, что именно необходимо получить!
Дело в том, что мне необходимо сделать захват изображения и потом его распечатать. Если я буду делать снимок в квадратном варианте, то у меня получаются черные углы, которые мне ни к чему в связи с большим расходом тонера. Так вот как можно сделать так, чтобы этих углов у меня не было???
raxp
…способ конечно не ахти, но… вот как вариант — расположите панель (цвет- белый), на ней ваш image и обрежьте панель регионом:
procedure MakeRounded(Control: TWinControl);
var R: TRect;
Rgn: HRGN;
begin
with Control do begin
R := ClientRect;
rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, width, width);
// для окружности поиграйтесь p5,p6
Perform(EM_GETRECT, 0, lParam(@r));
InflateRect(r, 0, 0);
Perform(EM_SETRECTNP, 0, lParam(@r));
SetWindowRgn(Handle, rgn, True);
Invalidate
end
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
MakeRounded(panel2);
end;
далее скриньте прямоугольную или квадратную область, т.к. задний фон белый, то нет и расхода тонера.
Kotofff
DeKot
Вот еще вариант:
var
Form1: TForm1;
fRgn: HRGN;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
fRgn:= CreateEllipticRgn(0,0,500,500);
//В CreateEllipticRgn(0,0,500,500); можно вставить любой регион
end;
procedure TForm1.FormPaint(Sender: TObject);
var bmp: TBitmap;
begin
bmp := TBitmap.Create;
try
bmp.LoadFromFile ('Screen.bmp');
Canvas.Brush.Bitmap := bmp;
PaintRgn (Canvas.Handle, fRgn);
FrameRgn (Canvas.Handle, fRgn, Canvas.Brush.Handle, 2, 2);
finally
Canvas.Brush.Color := clBlack;
Canvas.Brush.Bitmap := nil;
bmp.Free;
end;
end;
end.
тема на форуме от 2010 года
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)