Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как вырезать треугольный кусок из bmp 
:(
    Опции темы
MKsoft
Дата 18.10.2007, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 28.11.2006
Где: Ярославская обл. г. Углич

Репутация: нет
Всего: нет



Суть проблемы:
На форме два image-a в одном картинка bmp необходимо из первого вырезать кусок треугольной формы и вставить в конкретное место на втором image
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 18.10.2007, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



  Есть такой раздел в MSDN "Clipping Functions" т.е. функции для обрезки. Если при помощи SelectClipRgn назначит регион обрезки рисунку на который нужно копировать, то при копировании на него прямоугольного фрагмента, реально вставиться только то что поместиться в этот регион, а все остальное обрежется. Треугольный регион можно создать функцией CreatePolygonRgn. Получить прямоугольник который охватывает этот треугольник можно функцией GetBoundingBox.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
MKsoft
Дата 18.10.2007, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 28.11.2006
Где: Ярославская обл. г. Углич

Репутация: нет
Всего: нет



а примерчик накидать можешь
PM MAIL WWW ICQ   Вверх
MKsoft
Дата 18.10.2007, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 28.11.2006
Где: Ярославская обл. г. Углич

Репутация: нет
Всего: нет



Alexeis спасибо большое все получилось
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 19.10.2007, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Цитата(MKsoft @  18.10.2007,  18:37 Найти цитируемый пост)
а примерчик накидать можешь 

  Сорри был занят. Если несложно выложи пример, чтобы другие юзали.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
MKsoft
Дата 20.10.2007, 01:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 28.11.2006
Где: Ярославская обл. г. Углич

Репутация: нет
Всего: нет



Пожалуйста
Код

var
  R:integer=255;
  alfa:integer=0;
  betta:integer=0;
  bmp1:TBitmap;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
ap: array [1..3] of TPoint;
r: hRGN;

begin
Image2.Canvas.Brush.Color := ClWhite;
Image2.Canvas.FillRect(Canvas.ClipRect);

R:=255;//Длина катетов треугольника
alfa:=0;//Угол поворота треугольника
betta:=30;//угол между катетами

//задаем координаты углов
ap [1] := Point (0, 0);
ap [2] := Point (round(R*cos(alfa*pi/180)), round(R*sin(alfa*pi/180)));
ap [3] := Point (round(R*cos((alfa+betta)*pi/180)), round(R*sin((alfa+betta)*pi/180)));

//создаем вспомогательный Bitmap
bmp1:=TBitmap.Create;
bmp1.Width := Image1.Width;
bmp1.Height := Image1.Height;
bmp1.Canvas.CopyRect(Rect(0, 0, Image1.Width, Height),Image1.Picture.Bitmap.Canvas,Bounds(0, 0, Image1.Width, Height));

//создаем полигон треугольной формы
r:=CreatePolygonRgn(ap, 3, WINDING);
//копируем картинку внутри треугольника
SelectClipRgn(Image2.Canvas.handle, r);
Image2.Canvas.Draw(0, 0, Image1.Picture.Bitmap);
DeleteObject(r);

Image2.canvas.Draw(0, 0, bmp1);
end;

PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0580 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.