Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.31;
Скачать: CL | DM;

Вниз

Как смасштабировать 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
14-100908
zolotov
2003-07-14 15:25
2003.07.31
Где находятся файлы Formula One


3-100620
LinOS
2003-07-09 08:24
2003.07.31
Как получить пользователя из SQLConnection??


1-100723
sagchat
2003-07-18 20:22
2003.07.31
трайнер для GTA


8-100838
RBear
2003-04-08 15:53
2003.07.31
Проблема с картинко в OpenGL


14-100984
DiamondShark
2003-07-15 13:47
2003.07.31
Задачка.