Головна сторінка
Top.Mail.Ru Яндекс.Метрика
Форум: "Основна";
Поточний архів: 2002.01.08;
Завантажити: [xml.tar.bz2];

Вниз

Проблемми з розмірами картинки при роздруківці Знайти схожі гілки


Oleg Gashev   (2001-12-15 11:14) [0]

Ніяк не виходить распечать Image з точними розмірами. Він все одно роздруковується неправильно.
Роблю я так. Знаходжу розміри Bitmapa в inch:
sx, sy: real; ABitmap: = Image1.Picture.Bitmap; sx: = ABitmap.Width / GetDeviceCaps (image1.canvas.handle, LOGPIXELSX); sy: = ABitmap.Height / GetDeviceCaps (image1.canvas.handle, LOGPIXELSY);

Тепер знаходжу розміри в пікселах на принтері для роздруківки:
relwidth: = trunc (GetDeviceCaps (Printer.canvas.handle, LOGPIXELSX) * sx); relheight: = trunc (GetDeviceCaps (Printer.canvas.handle, LOGPIXELSY) * sy);

Печатка:
Printer.BeginDoc; DrawImage (Printer.Canvas, Rect (0, 0, relWidth, relHeight), ABitmap); Printer.EndDoc;

DrawImage:
procedure DrawImage (Canvas: TCanvas; DestRect: TRect; ABitmap: TBitmap); var Header, Bits: Pointer; HeaderSize: Cardinal; BitsSize: Cardinal; begin GetDIBSizes (ABitmap.Handle, HeaderSize, BitsSize); Header: = AllocMem (HeaderSize); Bits: = AllocMem (BitsSize); try GetDIB (ABitmap.Handle, ABitmap.Palette, Header ^, Bits ^); StretchDIBits (Canvas.Handle, DestRect.Left, DestRect.Top, DestRect.Right, DestRect.Bottom, 0, 0, ABitmap.Width, ABitmap.Height, Bits, TBitmapInfo (Header ^), DIB_RGB_COLORS, SRCCOPY); finally FreeMem (Header, HeaderSize); FreeMem (Bits, BitsSize); end; end;

Все це друкує з невірними розмірами. Де ж помилка?

З повагою Олег.



MrBeer   (2001-12-16 21:27) [1]

// Print bitmap X x Y millimeters size procedure PrintBM (B: TBitmap; x_mm, y_mm: double); var resx, resy: double; begin resx: = Printer.PageWidth / GetDeviceCaps (Printer.Handle, LOGPIXELSX); resy: = Printer.PageHeight / GetDeviceCaps (Printer.Handle, LOGPIXELSY); Printer.Canvas.StretchDraw (Rect (0,0, round (x_mm * resx), round (y_mm * resy)), B); end; // Print bitmap X x Y inch size procedure PrintBMInch (B: TBitmap; x_inch, y_inch: double); begin PrintBM (B, x_inch * 2.54, y_inch * 2.54); end;



MrBeer   (2001-12-16 21:40) [2]

procedure PrintSameSize (B: TBitmap); var scalex, scaley: double; begin scalex: = GetDeviceCaps (Printer.Handle, LOGPIXELSX) / GetDeviceCaps (B.Canvas.Handle, LOGPIXELSX); scaley: = GetDeviceCaps (Printer.Handle, LOGPIXELSY) / GetDeviceCaps (B.Canvas.Handle, LOGPIXELSY); Printer.Canvas.StretchDraw (Rect (0,0, round (B.Width * scalex), round (B.Height * scaley)), B); end;



MrBeer   (2001-12-16 21:48) [3]

A esli tak napisatj?
// ....
scalex: = GetDeviceCaps (Printer.Handle, LOGPIXELSX) / GetDeviceCaps (GetDC (0), LOGPIXELSX); scaley: = GetDeviceCaps (Printer.Handle, LOGPIXELSY) / GetDeviceCaps (GetDC (0), LOGPIXELSY);



сторінки: 1 вся гілка

Форум: "Основна";
Поточний архів: 2002.01.08;
Завантажити: [xml.tar.bz2];

наверх









Пам'ять: 0.56 MB
Час: 0.024 c
4-22458
Ajax
2001-10-31 17:50
2002.01.08
TColor і RGB


1-22028
tovSuhov
2001-12-18 12:16
2002.01.08
Може хто знає ...


1-22241
Yuraz
2001-12-17 10:09
2002.01.08
FileListBox1.FileName повертає повний шлях до файлу, як зробити щоб повертав тільки ім'я файлу?


4-22481
Stropal
2001-11-03 10:44
2002.01.08
Робота принтерів безпосередньо. порадьте


7-22421
Shen
2001-08-28 15:05
2002.01.08
Закачування даних через com порт





африкаанс албанський арабська вірменин азербайджанець баскський білоруський болгарська каталонський Китайська (спрощене письмо) Китайський традиційний) хорватський чеська данську мову нідерландський Ukranian естонець Філіппінська фінську мову французький
галісійська грузинський німецький грецький гаїтянський креольський давньоєврейську хінді угорський ісландський індонезієць ірландський італійський японський корейський латиська литовець македонець малайський мальтійський норвежець
перс полірування португальська румунський російська сербський словацький словенський іспанська суахілі шведську мову тайський турецька український урду в'єтнамський валлійський ідиш бенгальський боснійський
кебуано есперанто гуджараті хауса хмонг ігбо яванський каннада кхмерская Лао латинь маорі маратхі монгольський непальська панджабі сомалійський тамільська телугу йоруба
зулуський
Англійська Французький Німецький Італійський Португальська Русский Іспанська