בית
Top.Mail.Ru Yandeks.Metrika
פורום: "ראשי";
ארכיון נוכחי: 2002.01.08;
הורדה: [xml.tar.bz2];

למטה

בעיה עם גודל התמונה בעת ההדפסה מצא סניפים דומים


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

אני לא יכול להדפיס תמונה במידות מדויקות. זה עדיין מודפס בצורה לא נכונה.
אני עושה את זה. מצא מידות אינץ 'של Bitmapa:

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;


ציור:

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.55 MB
זמן: 0.036 c
1-22050
Русский
2001-12-18 17:03
2002.01.08
שאלה מאוד מעניינת :))))


1-22255
דמיטרי קאטאב
2001-12-14 14:51
2002.01.08
כיצד ליישם פריט תפריט חדש ב- IE, הנקרא על ידי הכפתור הימני (כמו למשל ב- Reget)


14-22397
מת
2001-11-10 18:49
2002.01.08
האם למישהו יש מפת gif או jpg מתאר של העולם?


14-22390
קיפוד
2001-11-08 12:54
2002.01.08
תשמע מרלין, האם אתה ישן אי פעם? כלומר, אתה מרגיע?


1-22021
סוקול
2001-12-18 08:54
2002.01.08
הורד קובץ!





אפריקאנס אלבני ערבי אַרְמֶנִי אזרביג'אן הבסקים בלארוסית בולגרי קטלאנית הסיני (פשוט) סינית (מסורתית) קרואטית צ'כיה דני הולנדי אנגלית אסטוני פיליפיני פיני צרפתית
גליציה גאורגיה גרמני יווני קריאולית האיטית עברי הינדי הונגרי איסלנדי אינדונזי אירי איטלקי יפני קוריאני לטבי ליטאי מקדוניה מלאית מלטזית נורבגי
פרסי פולני פורטוגזי רומנית רוסי סרבית סלובקי סלובני ספרדי סוואהילית שבדי תאילנדי תורכי אוקראיני אורדו ויאטנמית וולשית יידיש בנגלית בוסנית
קבואנו אספרנטו גוג'ראטית האוסה המונג איגבו יָאוָנִי קנאדה לחמר לאו הלטינית מאורים מרתי מונגולי נפאלית פונג'בית סומליה טמילית טלוגו יורובה
זולו
Английский Французский Немецкий Итальянский Португальский Русский Испанский