Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2009, 00:26   #1
firmwares
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 17
По умолчанию как сделать ТImage круглым....

Доброе время суток...

Собственно вопрос!
Как модно сделать ТImage круглым?
Или как можно сохранять из ТImage круглое изобрежение
с заданными размерами?

Всем заранее большое спасибо!!!
firmwares вне форума Ответить с цитированием
Старый 17.12.2009, 00:27   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Впишите саму картинку в круг на прозрачном фоне...
mihali4 вне форума Ответить с цитированием
Старый 17.12.2009, 08:17   #3
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

А я вообще не понял что значит "круглое изображение". Изображение не может быть круглым. Просто может быть область за изображением круга, пиксели которой имеют значение альфа канала равное 255
Altera вне форума Ответить с цитированием
Старый 17.12.2009, 08:25   #4
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Можно так попробовать
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
image1.Canvas.Brush.Style:=bsClear;
image1.Canvas.Pen.Color:=clred;
image1.Canvas.Ellipse(5,5,image1.Width-5,image1.Height-5);
image1.Canvas.Brush.Style:=bsSolid;
image1.Canvas.FloodFill(3,3,clred,fsborder);
image1.Transparent:=true;
image1.Picture.SaveToFile('d:\1.bmp');
end;
SERG1980 вне форума Ответить с цитированием
Старый 19.12.2009, 16:21   #5
firmwares
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 17
По умолчанию

Доброго времени суток!
Чтобы все встало на свои места, я решил уточнить, что именно необходимо получить!
Дело в том, что мне необходимо сделвть захват изображения и потом его распечатать. Если я буду делать снимок в квадратном варианте, то у меня получаются черные углы, которые мне ни к чему в связи с большим расходом тонера. Так вот как можно сделать так, чтобы этих углов у меня небыло???

Всем заранее спасибо!
firmwares вне форума Ответить с цитированием
Старый 19.12.2009, 16:30   #6
firmwares
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 17
По умолчанию


Вот пример того, что я хочу получить!!!!
За фото прошу прощения (понимаю, что отвратитульно)
firmwares вне форума Ответить с цитированием
Старый 19.12.2009, 16:53   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...способ конечно не ахти, Вован-бы думаю чего-нить лучше предложил, но... вот как вариант - расположите панель (цвет- белый), на ней ваш 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;
далее скриньте прямоугольную или квадратную область, т.к. задний фон белый, то нет и расхода тонера.
Изображения
Тип файла: jpg Копировать из новый-2.jpg (48.8 Кб, 206 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 19.12.2009, 17:02   #8
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Еще как вариант. Прикрепил.
Вложения
Тип файла: rar ImageAnd.rar (223.3 Кб, 101 просмотров)
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 19.12.2009, 17:10   #9
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Kotofff, +1...
...и генерить маску можно сразу на ходу.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 19.12.2009, 18:20   #10
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Вот еще вариант:
Код:
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.
Скрин:

Есно, файл 'Screen.bmp' подставляете свой.
И не сомневайся даже ... отдых - кайф, работа - лажа!

Последний раз редактировалось DeKot; 19.12.2009 в 18:22.
DeKot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не видны элементы массива из ТImage. Ckomoroh Общие вопросы Delphi 2 03.12.2009 20:32
как сделать или отдолжить такой же движок форума как по ссылке? Дим@ Свободное общение 5 13.10.2009 20:55
Как такое сделать (извените. но даже не знаю как это называется) Van'Denis HTML и CSS 3 30.08.2009 10:46
как сделать чтоб экселев. файл висел открытым на рабочем столе как афиша на заборе? Мара Помощь студентам 6 24.07.2008 13:29