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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2010, 14:38   #11
alxd
Пользователь
 
Регистрация: 02.07.2009
Сообщений: 77
По умолчанию

Хотя нет сейчас еще раз все перепроверил, обнаружил следующее:
И
Код:
pic.SaveToFile('C:\FromTPic.bmp');
и
Код:
bitmap.SaveToFile('C:\FromTBit.bmp');
дают похожие результаты - дефекты присутствуют на обоих изображениях.
А вот если в Paint, Paint.NET и т.п. вставлять из буфера - все нормально.
Выходит глюк в TClipboard?
И как теперь быть?
alxd вне форума Ответить с цитированием
Старый 03.09.2010, 15:01   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Выходит глюк в TClipboard?
Скорее глюк оффиса.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.09.2010, 16:09   #13
alxd
Пользователь
 
Регистрация: 02.07.2009
Сообщений: 77
По умолчанию

Да нет, не офиса, и не клипборда. И вот почему.
Взял простой EMF и попробывал сконвертировать в BMP - результат такой же

Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  metafile: TMetafile;
  bitmap: TBitmap;
begin
  metafile := TMetafile.Create;
  metafile.LoadFromFile('C:\Metafile.emf');

  bitmap := TBitmap.Create;
  bitmap.Width := metafile.Width;
  bitmap.Height := metafile.Height;

  bitmap.Canvas.Draw(0,0, metafile);
  bitmap.SaveToFile('C:\Metafile2Bmp.bmp');
  Image1.Picture.Metafile := metafile;
end;
Пробовал этот же EMF преобразовать в программе "FastStone Image Viewer" - тоже самое, хотя и не сильно легче от этого стало.

Как решить проблему?

P.S. последние исходники и файл EMF прилагаются
Вложения
Тип файла: zip EMF2BMP.ZIP (12.3 Кб, 9 просмотров)
alxd вне форума Ответить с цитированием
Старый 03.09.2010, 16:14   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Знаешь, если разберешся в чем дело - отпишись. Мне тоже интересно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.09.2010, 16:16   #15
alxd
Пользователь
 
Регистрация: 02.07.2009
Сообщений: 77
По умолчанию

Буду стараться разобраться, хотя уже голова вся кругом от этого - целый день бьюсь
alxd вне форума Ответить с цитированием
Старый 03.09.2010, 22:32   #16
x128
Форумчанин
 
Регистрация: 03.02.2010
Сообщений: 178
По умолчанию

Цитата:
Сообщение от alxd Посмотреть сообщение
Взял простой EMF и попробывал сконвертировать в BMP - результат такой же

Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  metafile: TMetafile;
  bitmap: TBitmap;
begin
  metafile := TMetafile.Create;
  metafile.LoadFromFile('C:\Metafile.emf');

  bitmap := TBitmap.Create;
  bitmap.Width := metafile.Width;
  bitmap.Height := metafile.Height;

  bitmap.Canvas.Draw(0,0, metafile);
  bitmap.SaveToFile('C:\Metafile2Bmp.bmp');
  Image1.Picture.Metafile := metafile;
end;
Как решить проблему?
Замени строчку bitmap.Canvas.Draw(0,0, metafile) на PlayEnhMetaFile(bitmap.Canvas.Handl e, metafile.Handle, bitmap.Canvas.ClipRect) и все должно стать на свои места.
x128 вне форума Ответить с цитированием
Старый 03.09.2010, 23:11   #17
alxd
Пользователь
 
Регистрация: 02.07.2009
Сообщений: 77
По умолчанию

Цитата:
Сообщение от x128 Посмотреть сообщение
Замени строчку bitmap.Canvas.Draw(0,0, metafile) на PlayEnhMetaFile(bitmap.Canvas.Handl e, metafile.Handle, bitmap.Canvas.ClipRect) и все должно стать на свои места.
Спасибо, все отлично стало! А почему bitmap.Canvas.Draw(0,0, metafile) не работало как надо?
alxd вне форума Ответить с цитированием
Старый 04.09.2010, 11:12   #18
x128
Форумчанин
 
Регистрация: 03.02.2010
Сообщений: 178
По умолчанию

Точно сказать тяжело, но судя по артефактам дело скорее всего в округлении при пересчете ширины и высоты т.к. эти значения у метафайлоф в миллиметрах.
x128 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Bitmap _-Re@l-_ Мультимедиа в Delphi 2 21.07.2010 19:08
Bitmap Delphi novi4ok_Delphi Помощь студентам 0 03.06.2010 13:52
из-за чего появляется полоса (на скрине) при вставке BitMap в TImage? - Проблема с Bitmap Grey@2009 Мультимедиа в Delphi 2 02.01.2010 20:23
RaveReports5 + Bitmap R11 Помощь студентам 0 22.12.2009 23:56
Bitmap? HunterMan Общие вопросы .NET 7 27.12.2008 19:02