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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2009, 08:02   #11
AnTe
Форумчанин
 
Регистрация: 25.09.2008
Сообщений: 209
По умолчанию

Блин, интересный прикол. Кидаем на форму Timage, две кнопки, в обработчике первой пишем:

Код:
procedure TfmTest.btnStrechDrawMetaFileClick(Sender: TObject);
var
  MF: TMetafile;
  MC: TMetafileCanvas;
  Bitmap: TBitmap;
begin
  ClearCanvas(Image1.Canvas);
  MF := TMetafile.Create;
  MF.Width := image1.Width * 10000;
  MF.Height := image1.Height * 10000;
  try
    MC := TMetafileCanvas.Create(MF, 0);
    try
      Bitmap := TBitmap.Create;
      Bitmap.LoadFromFile('D:\System\_Desktop\Desktop\111.bmp');
      SetStretchBltMode(MC.handle, HALFTONE);
      StretchBlt(MC.handle, 0, 0, image1.Width * 10000, image1.Height * 10000, Bitmap.canvas.handle, 0, 0, Bitmap.width, Bitmap.height, SRCCOPY);
      Bitmap.free;
    finally
      MC.Free;
    end;

    image1.Canvas.StretchDraw(Rect(0, 0, image1.Width, image1.Height), MF)

  finally
    MF.Free;
  end;
end;
т.е. обращаю внимание, что в метафайл рисунок я растягивал, используя StrechBlt, а сам метафайл, на image1 - делфёвой StrechDraw!
ожидал, что качество будет соответственно StrechDraw, дерьмовым, ан нет.

Для теста на вторую кнопку навешал вывод рисунка напрямую:

Код:
procedure TfmTest.btnStrechDrawImageClick(Sender: TObject);
var
  Bitmap: TBitmap;
begin
  ClearCanvas(Image1.Canvas);

  Bitmap := TBitmap.Create;
  Bitmap.LoadFromFile('D:\System\_Desktop\Desktop\111.bmp');

//  image1.Canvas.StretchDraw(Rect(0, 0, Image1.Width, image1.Height), Bitmap);
  SetStretchBltMode(image1.Canvas.handle, HALFTONE);
  StretchBlt(image1.Canvas.handle, 0, 0, Image1.Width, image1.Height, Bitmap.canvas.handle, 0, 0, Bitmap.width, Bitmap.height, SRCCOPY);

  Bitmap.free;
end;
изменял, сначала ужимал рисунок, используя StrechDraw, затем через StrechBlt

результат: растягивание через StrechBlt в метафайл, а затем тот через StrechDraw эквивалентно выводу рисунка через StrechBlt

итого, вывод: метафайл растягивается через StrechDraw в отличном качестве.
AnTe вне форума Ответить с цитированием
Старый 06.02.2009, 08:13   #12
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Мда... видимо вы вообще не вменяемы ? Ну сколько можно.. реально флудерство уже идет какое то...

Я ДАЛ ОТВЕТ!!! ПОЧЕМУ ВЫ НЕ ЧИТАИТЕ ЕГО???
Цитата:
// пропорционально вашим размерам создадим допустимый образец
// незнаю почему, но у меня ограничевается разрешением экрана
ПРОБЛЕМА В ЗАДАНИИ РАЗМЕРА!!!


или сейчас опять скажите что я не то говорю ?
BOBAH13 вне форума Ответить с цитированием
Старый 06.02.2009, 08:36   #13
AnTe
Форумчанин
 
Регистрация: 25.09.2008
Сообщений: 209
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Мда... видимо вы вообще не вменяемы ? Ну сколько можно.. реально флудерство уже идет какое то...

Я ДАЛ ОТВЕТ!!! ПОЧЕМУ ВЫ НЕ ЧИТАИТЕ ЕГО???

ПРОБЛЕМА В ЗАДАНИИ РАЗМЕРА!!!


или сейчас опять скажите что я не то говорю ?
1. я не использовал GDI+
2. тот пример, который я писал (вывод метафайла на канву, средствами Delphi), не работает вне зависимости от размера. После Вашего поста я даже заменил 21000 на 210 и 29000 на 290 - эффект тот же: белый лист
AnTe вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Масштабирование Град Microsoft Office Excel 6 24.10.2008 09:23
масштабирование изображения Alex_Pro Общие вопросы .NET 0 25.05.2008 09:09
масштабирование Alex_Pro Общие вопросы .NET 0 21.05.2008 18:21
масштабирование lenivec Общие вопросы Delphi 1 23.02.2008 07:07
масштабирование картинки ZhekON Мультимедиа в Delphi 6 16.06.2007 17:00