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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вырезать область векторной картинки из TMetaFile 
:(
    Опции темы
Delphist
Дата 25.8.2006, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

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



У меня есть TMetaFile, который содержит векторную картинку как мне из него вырезать кусок с заданными размерами и разместить в новом TMetaFile (можно и в этом же) - т.е. задача свелась к обрезанию не нужной части векторного рисунка.


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
bems
Дата 25.8.2006, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



Область прямоугольная?


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Delphist
Дата 28.8.2006, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

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



Цитата(bems @ 25.8.2006,  19:08)
Область прямоугольная?

Да


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Alexeis
Дата 28.8.2006, 07:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Delphist, CopyRect, области пробовал? После копирования провести заливку, того же прямоугольника белым (отуда откуда коприровали) цветом.


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

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

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


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

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



Цитата(alexeis1 @ 28.8.2006,  08:52)
Delphist, CopyRect, области пробовал? После копирования провести заливку, того же прямоугольника белым (отуда откуда коприровали) цветом.

CopyRect пробовал не помог (правда я заливку белым цветом не делал). А как вообще сделать заливку это же вектор.


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Alexeis
Дата 28.8.2006, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Delphist, с TMetaFile полная беда, он позволяет только рисовать, на поверхности. Изображение возвращает только ч/з Metafile. А вот ничего стороннего я не нашел...

Добавлено @ 09:59 
По крайней мере бесплатого.


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

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

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


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

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



Вариант:
Код

procedure TForm1.Button1Click(Sender: TObject);
var Rgn:HRGN;
    s:TMetafile;
begin
 s:=TMetaFile.Create;
 s.Width:=500;
 s.Height:=500;
 Rgn:=CreateRectRgn(-10,-10,250,250);
 with TMetafileCanvas.Create(s,0) do
 try
  SetViewportOrgEx(Handle,-10,-10,nil);
  SelectClipRgn(Handle,Rgn);
  Brush.Color:=clWhite;
  Rectangle(0,0,100,100);
  Ellipse(100,100,200,200);
  Ellipse(200,200,300,300);
  Ellipse(300,300,400,400);
  Rectangle(400,400,500,500);
  SelectClipRgn(Handle,0);
 finally
  Free;
  DeleteObject(Rgn);
 end;
 Image1.Picture.Metafile:=s;
end;


Вариант:
Код

procedure TForm1.Button2Click(Sender: TObject);
var s,d:TMetafile;
    i:integer;
begin
 Image1.AutoSize:=true;
 s:=TMetaFile.Create;
 s.Width:=500;
 s.Height:=500;
 with TMetafileCanvas.Create(s,0) do
 try
  Brush.Color := clWhite;
  Rectangle(0,0,100,100);
  Ellipse(100,100,200,200);
  Ellipse(200,200,300,300);
  Ellipse(300,300,400,400);
  Rectangle(400,400,500,500);
 finally
  Free;
 end;
 d:=TMetafile.Create;
 d.Width:=250;
 d.Height:=250;
 i:=0;
 repeat
  with TMetafileCanvas.Create(d,0) do
  try
   d.Clear;
   SetViewportOrgEx(Handle,-i,-i,nil);
   PlayEnhMetaFile(Handle,s.Handle,Rect(0,0,s.Width,s.Height));
  finally
   Free;
  end;
  Image1.Picture.Metafile:=d;
  Application.ProcessMessages;
  sleep(10);
  inc(i);
 until (i=250);
end;


И т.д. и т.п.


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
Delphist
  Дата 29.8.2006, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

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



Girder скажи, пожалуйтса, два твоих варианта это одно целое или это два варианта решающие одну и туже задачу, но разными способами. 
И еще одна просьба не мог бы прокоментировать свои варианы.

Это сообщение отредактировал(а) Delphist - 29.8.2006, 09:11


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Alexeis
Дата 29.8.2006, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Ух ты! браво Girder ограничил область вывода.  Сверху и слева
Код

SetViewportOrgEx(Handle,-10,-10,nil);

Справа и снизу прямоугольным регионом 
Код

Rgn:=CreateRectRgn(-10,-10,250,250);
...............................
SelectClipRgn(Handle,Rgn);



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

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

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

Запрещено:

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

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

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

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


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

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


 




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


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

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