Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];

Вниз

Как смасштабировать Image   Найти похожие ветки 

 
chs2r   (2003-07-18 12:42) [0]

Есть картинка TImage знаю разрешение принтера
нужно картинку перевести в другой масштаб и поместить на канву принтера. А как картинку масштабировать-не знаю. Помогите советом пожалста


 
yaJohn   (2003-07-18 12:46) [1]

TImage.Stretch


 
KSergey   (2003-07-18 12:53) [2]

Вот только я уже не помню в каких координатах параметр ARect
Вероятно, в текущих координатах, принтера. Просто не помню.
Обязательно гляньте указанные ссылки - особенно последнюю. Ну и конечно спасибо этому форуму, Анатолию Подгорецкому в частности.
Промежуточный BitMap создаю только потому, что не знаю заранее не входе какого формата картинка, а так получилось универсально, хотя и память жрет, конечно. Вероятно, можно как-то лучше сделать- но не знаю как.
А, еще было задание выводить картинку на принтер с определенным разрешением. Не помню - есть здесь или нет.
Если что-писать на мыло.

// (с) LongIsland (08.05.03 10:53) hydralex@mail.ru
// http://delphimaster.net/view/1-1052334020/
// (c) wea@felten.co.at (Alexander Wernhart)
// On Tue, 4 Feb 1997 20:54:43 -0300, Ruy Ponce de Leon Junior <rplj@di.ufpe.br>
// http://doc.trecom.tomsk.su/Delphi/UnofficialDevelopersFAQ/pages/printer.htm
procedure PicturePrint(APic: TPicture; ARect: TRect);
var
Info: PBitmapInfo;
InfoSize, ImageSize: DWord;
Image: Pointer;
BitMap: TBitmap;
begin
Printer.Canvas.Brush.Style := bsClear; // сам добавил; не уверен, что надо
BitMap := TBitmap.Create; // весь дальнейший код работает только с Bitmap
try
BitMap.Assign (APic.Graphic);
GetDIBSizes (BitMap.Handle, InfoSize, ImageSize);
Info := AllocMem (InfoSize);
try
Image := AllocMem (ImageSize);
try
GetDIB (BitMap.Handle, 0, Info^, Image^);
CalcCardPrRect (n);
StretchDIBits (Printer.Canvas.Handle,
ARect.Left, ARect.Top, ARect.Right-ARect.Left, ARect.Bottom-ARect.Top,
0, 0, BitMap.Width, BitMap.Height,
Image, Info^, DIB_RGB_COLORS, SRCCOPY);
finally
FreeMem(Image, ImageSize);
end;
finally
FreeMem(Info, InfoSize);
end;
finally
BitMap.Free;
end;
end; // procedure PicturePrint



 
chs2r   (2003-07-18 13:24) [3]

спасибо, все посмотрю и попробую :)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.009 c
11-100649
SPeller
2002-11-17 16:35
2003.07.31
Это DoubleBuffered виноват?


3-100534
Spawn
2003-07-10 20:47
2003.07.31
Реляционные базы данных


8-100843
БрутЪ
2003-04-07 10:49
2003.07.31
Прорисовка


1-100732
Fider
2003-07-19 12:07
2003.07.31
Соответствие строки шаблону


14-100873
Kiril
2003-07-12 14:32
2003.07.31
Как в одном проекте





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский