منزل
Top.Mail.Ru Yandeks.Metrika
المنتدى: "Main";
الأرشيف الحالي: 2002.01.08;
تنزيل: [xml.tar.bz2];

إلى

مشكلة في حجم الصورة عند الطباعة البحث عن فروع مماثلة


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

يستحيل طباعة الصورة بأبعاد محددة. لا يزال لا يطبع بشكل صحيح.
أنا أفعل ذلك. البحث عن أبعاد Bitmapa بالبوصة:
sx، sy: حقيقي؛ 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:
إجراء DrawImage (قماش: TCanvas ؛ DestRect: TRect ؛ ABitmap: TBitmap) ؛ var Header، Bits: Pointer؛ حجم الرأس: الكاردينال. BitsSize: الكاردينال. بدأ GetDIBSizes (ABitmap.Handle ، HeaderSize ، BitsSize) ؛ رأس: = AllocMem (HeaderSize) ؛ البتات: = AllocMem (BitsSize) ؛ محاولة 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_CORS؛ أخيرا FreeMem (رأس ، HeaderSize) ؛ FreeMem (بت ، BitsSize) ؛ ينتهي. ينتهي.

كل هذا يطبع بالحجم الخطأ. أين الخطأ؟

مع خالص التقدير ، أوليغ.



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

// طباعة صورة نقطية X x Y ملليمتر حجم الإجراء PrintBM (B: TBitmap ؛ x_mm ، y_mm: double) ؛ var resx، resy: double؛ بدأ 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)؛ ينتهي. // طباعة صورة نقطية X x Y حجم بوصة الإجراء PrintBMInch (B: TBitmap؛ x_inch، y_inch: double)؛ بدأ PrintBM (B ، x_inch * 2.54 ، y_inch * 2.54) ؛ ينتهي.



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

الإجراء PrintSameSize (B: TBitmap) ؛ var scalex ، مقياس: مزدوج ؛ بدأ 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)؛ ينتهي.



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

و esli تاك napisatj؟
// ....
scalex: = GetDeviceCaps (Printer.Handle، LOGPIXELSX) / GetDeviceCaps (GetDC (0)، LOGPIXELSX)؛ scaley: = GetDeviceCaps (Printer.Handle، LOGPIXELSY) / GetDeviceCaps (GetDC (0)، LOGPIXELSY)؛



صفحات: 1 فرع كامل

المنتدى: "Main";
الأرشيف الحالي: 2002.01.08;
تنزيل: [xml.tar.bz2];

الطابق العلوي





الذاكرة: 0.55 ميغابايت
الوقت: 0.022 ج
6-22284
هذيان
2001-10-08 16:29
2002.01.08
كيفية إرسال رسالة إلى جميع عناوين IP في وقت واحد


1-22214
T2
2001-12-16 07:15
2002.01.08
BMP 2 RichEdit


1-22252
tovSuhov
2001-12-17 14:22
2002.01.08
C TreeView عقبة صغيرة ...


1-22192
حالم
2001-12-15 19:34
2002.01.08
كيفية سحب ثواني من الوقت وترجمتها


4-22467
ظل
2001-11-01 15:46
2002.01.08
TOPMOSTS





الأفريكانية الألبانية عربي الأرميني أذربيجان الباسكي البيلاروسية Bulgarian التشيكية الصينية المبسطة) تقاليد صينية) الكرواتية التشيكية دانماركي Dutch English الإستونية الفلبينية Finnish جيب
الجاليكية الجورجية الألمانيّة اليونانيّة الكريولية الهايتية اللغة العبرية الهندية الهنغارية أيسلندي Indonesian الأيرلندية Italian اليابانيّة الكوريّة اللاتفية اللتوانية المقدونية الملايو المالطية Norwegian
اللغة الفارسية بولنديّة البرتغاليّة رومانية Russian صربي السلوفاكيّة سلوفيني إسباني السواحيلي Swedish Thai التركية الأوكراني الأردية الفيتنامية ويلزي اليديشية البنغالي البوسنية
السيبيونو الاسبرانتو الغوجاراتية الهوسا همونغ الإيبو جاوي الكانادا الخمير لاو لاتينية الماوري المهاراتية المنغولية النيبالية البنجابية الصومالية التاميل التيلجو اليوروبا
زولو
Английский Французский ألماني Итальянский البرتغالية Русский Испанский